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;としなければならない。

とりあえず次からが本格的にマクロなので、キリがいいところで終わっとく。