p566〜p598まで
ビット演算周り
ここらへんはさくっといける。一応あとで引きやすいようにまとめだけやっとこう。
・論理積は特定のビットを取り出すときに使う ・論理和はビット合成に使う ・排他的論理和は特定のビットを反転させるのに使う ・論理否定は論理積と組み合わせて(NAND)で特定のビットを消すときに使う
インライン関数
・メンバ関数のinline宣言は実装の方に書いただけで充分(いつもプロトタイプ宣言に書いていた・・・) ちなみにinline付けるのはプロトタイプ宣言でも実装でもどっちでもいいらしい。 ・あと書いてなかったけど、inline関数は内部リンケージを持つ。これ重要。 このことから実装もヘッダファイルに書いたほうがいい。 ・仮想関数もinline関数にできるがその場合は直接呼び出された場合にのみinline展開が期待できる。 これはアップキャストした場合、特定の1つのクラスの処理を埋め込むことができないため。
そういえばいつも思ってるんだけど、クラス宣言内に実装書いてさらにinline宣言しても特に変わりはないのかな?
typedef
ここからマクロに突入。
・同義語はシノニムと呼ばれる。 ・ptrdiff_tという型は符号付き整数型でポインタ同士の引き算の結果の型。 ・typedefはクラス内でアクセス指定子の影響を受けるため隠蔽可能。 ・typedef int* Hoge;としてconst Hoge a;やHoge const b;とした場合、int* constとして解釈される。 もしconst int*がほしい場合は、typedef const int* CHoge;としなければならない。
とりあえず次からが本格的にマクロなので、キリがいいところで終わっとく。