ひきこもりプログラマ

C++のこととか。

項目35: 自ら言語の標準に慣れる

2006-09-10 | More Effective C++
場所
263ページ33行目
The Annotated C++ Reference Manual
『注解 C++リファレンスマニュアル』

場所
264ページ5行目
ARMで記述されたものとは異なる新たに出現した標準が規定するC++と,基本的な方法について,
標準が規定するC++とARMで記述されたものとがどのように異なるのか,その基本について,
原文
the primary ways in which the C++ specified by the standard differs from that described by the ARM

場所
264ページ7行目
この「出現しつつある標準化」といのは(中略)プログラミング言語C++を規定している。[削除]
(すでに標準は存在する)
原文

場所
264ページ16行目
クラス定義内で定数の静的なクラスメンバー全体を初期化する機能
クラス定義内で整数の静的なクラスメンバーを初期化する機能
原文
the ability to initialize constant integral static class members within a class definition.

場所
246ページ19行目
型なし
型以外の
原文
non-type

場所
264ページ32行目
The Design and Evolution of C++
『C++の設計と進化』

場所
265ページ4行目
あまり宣伝されていない。[追加]
『C++の設計と進化』を例にとっても,標準ライブラリについてはほとんど言及していない。
原文
The Design and Evolution of C++, for example, makes almost no mention of the standard library.

場所
265ページ14行目
マイク・バイロット (Mike Vilot) は言った
マイク・バイロットが言われたのは
原文
Mike Vilot was told

場所
265ページ15行目
ある人は感情的になるだろう
世の中にはえらく感情的になる人もいるのだ
原文
Some people get so emotional.

場所
266ページ11行目
これで多くの詳細なものを解釈することができ,
これでも細かい部分はずいぶんとごまかしてある。
原文
Even this glosses over many details,

場所
266ページ20行目
basic_stringテンプレートがこれらのことを可能にしてくれるから。
basic_stringテンプレートではこうしたことも可能なのだが。
原文
the basic_string template allows you to do these things.

場所
266ページ22行目
一般化してテンプレートを一般化することは,
なにかを一般化して,その一般化をテンプレートとして表現することは,
原文
generalize it and make the generalization a template

場所
266ページ33行目
それらの名前の資格を得ることなしに
それらの名前を修飾せずに
原文
without explicitly qualifying their names

場所
267ページ6行目
コンテナーやアルゴリズムの一部の名前であり
コンテナとアルゴリズム部分の名前であり
原文
the name of the containers and algorithm portion

場所
268ページ14行目
不等式,参照はがし,前置形式のインクリメント(項目6参照)の比較
不等式による比較,参照はがし,前置形式のインクリメント(項目6参照)
原文
comparison for inequality, dereferencing, prefix increment (see Item 6td)

場所
268ページ16行目
ポインターを利用するのにfindを制限する
findがポインターを利用するように制限する
原文
limit find to using pointers

場所
270ページ16行目
クラスと協定 (convention) の集まりを守る関数テンプレートの集合である。
いくつかの決まりを厳格に守っている,クラスと関数のテンプレートの集合である。
原文
a collection of class and function templates that adhere to a set of convention.

場所
271ページ1行目
それに親しむためには時間をかける必要がある。
それに親しむのに費やした時間は有意義なものになる。
原文
the time you take to familiarize yourself with it is time well spent.

データ構造の互換性(項目34)

2006-09-03 | More Effective C++
場所
263ページ1行目
ポインターをオブジェクトに,非メンバーあるいは静的関数をポインターに安全に変換することができる。
オブジェクトへのポインターや,非メンバーあるいは静的関数へのポインターを安全にやりとりすることができる。
原文
can safely exchange pointers to objects and pointers to non-member or static functions.

場所
263ページ5行目
言語の法律家であれば(中略)推量することは確実である。[最新の標準に合わせて変更]
構造体の配置を決める規則は,C++とCで同じなので,両方の言語でコンパイルできる構造体定義であれば,その配置も両方のコンパイラで同じであると推量しても大丈夫だ。
原文
Because the rules governing the layout of a struct in C++ are consistent with those of C, it is safe to assume that a structure definition that compiles in both languages is laid out the same way by both compilers.

場所
263ページ9行目
もし,あなたが「非仮想」関数をC++版の構造体に加える場合,そのメモリー割付けは変化させないようにして,非仮想関数のみを含む構造体(あるいはクラス)のオブジェクトは,構造体定義にメンバー関数定義だけを欠いたそれらのCの同胞と互換にする必要がある。
もし,あなたが「非仮想」関数をC++版の構造体に加える場合,そのメモリー配置は変わらないはずなので,非仮想関数のみを含む構造体(あるいはクラス)のオブジェクトは,そこからメンバー関数宣言だけを除いたような定義のC版構造体と互換性がある。
原文
If you add nonvirtual functions to the C++ version of the struct, its memory layout should not change, objects of a struct (or class) containing only non-virtual functions should be compatible with their C brethren whose structure definition lacks only the member function declarations.

場所
263ページ15行目
基底構造体
基底構造体(またはクラス)から派生した構造体
原文
structs with base struct (or classes)

場所
263ページ19行目
Cと互換な非仮想メンバー関数をC++版の構造体に加える
非仮想メンバー関数を,それ以外の部分はCと互換性があるようなC++版の構造体に加える
原文
Adding non-virtual member functions to the C++ version of a struct that's otherwise compatible with C

静的オブジェクト初期化(項目34)

2006-09-03 | More Effective C++
場所
260ページ20行目
静的クラスオブジェクトのコンストラクターと大域的なオブジェクト,名前空間,ファイル有効範囲は
静的クラスオブジェクト,大域オブジェクト,名前空間オブジェクト,それにファイルスコープオブジェクトのコンストラクターは
原文
the constructors of static class objects and objects at global, namespace, and file scope

場所
261ページ7行目
mainが最初に起動されるジレンマを解決するには,mainが実行される前にオブジェクトが生成されている必要があるのだが,
mainが最初に起動されることになっているにもかかわらず,オブジェクトはmainが実行される前に生成されている必要がある,というジレンマを解決するには,
原文
To resolve the dilemma that main is supposed to be invoked first, yet objects need to be constructed before main is executed,

場所
261ページ14行目
あなたのオブジェクトファイルではそのような関数を見ることがないように,それらは内部的に生成されている。
インラインで生成されることもある。そうした場合,オブジェクトファイルの中にはこれらの関数は見つからない。
原文
they may even be generated inline, in which case you won't see any functions for them in your object files.

場所
262ページ7行目
ほとんどすべてで
ほとんどのベンダーが
原文
almost all

名前マングリング(項目34)

2006-09-03 | More Effective C++
場所
258ページ23行目
オーバーロードすることは,ほとんどのリンカーで互換ではなく,それは,リンカーが一般的には,同じ名前の複数の関数を懐疑的に見るからである。名前マングリングはリンカーの実現における特権であり,特にリンカーはほとんどの場合すべての関数名が唯一につけられるように主張するのである。
オーバーロードは,たいていのリンカーとは相容れない。リンカーが一般的には同じ名前の関数をよく思っていないからだ。名前マングリングは,こうしたリンカーの現実,つまりたいていのリンカーがすべての関数名が一意であるように要求する,ということに対する譲歩案なのである。
原文
Overloading is incompatible with most linkers, because linkers generally take a dim view of multiple functions with the same name. Name mangling is a concession to the realities of linkers; in particular, to the fact that linkers usually insist on all function names being unique.

場所
259ページ1行目
それは次の様になり,
以下のようなコードを書くと,
原文
when you write this,

場所
259ページ13行目
実際drawLineが呼び出され,
その関数は実際にdrawLineという名前で呼ばれているのであり,
原文
it's really called drawLine,

場所
260ページ12行目
あやされて寝かせられる
思い込まされる
原文
be lulled into thinking

場所
260ページ16行目
そのような互換でないという問題もじきに捜し出せるだろう。
そのような非互換性に気付くのは早いほうがいいだろう。
原文
it's better to find out about such incompatibilities sooner than later.