Effective C++改訂2版のメモ(第1章)

- No.1 #defineでなく、const,inlineを使おう

ここでは、#defineの使い方を2つ挙げてC++流の代替方法を提示している。
定数を定義する#defineについて、const変数で代替する、という案。constはどこかに実体が必要なので#defineとは等しくはないし、本文でも書いてるように宣言と実装を別々に書かなければならず手間が増える。言いたいことはわかるが、これはあまり同意できない。
もう一つはマクロ関数を定義する#defineについて、inline関数で代替する、という案。なぜこうなるかというと、マクロ関数を書く目的を関数コールのオーバーヘッドを無くすためだけだと考えているため。そうでなく、同じ記述が複数表れるのを一つにするようなマクロ関数は考えてないもよう。
あと、#ifdefで参照されるような#define定義も考慮してないのも気になる。

- No.2 stdio.hでなくiostreamを使おう。

printf/scanfでなく、cin << や cout >> を使おう、というもの。理由は型のミスマッチが起きない、というもの。言いたいことはわかるが、実用上入出力の<<や>>がう使われることはまずない。出力形式がどうでもいいときに、使うことが稀にあるぐらい。

- No.3 mallocとfreeより、new/deleteを使おう。

というか混在するなと言ってる。それはそうだが、malloc/freeを使わないで済むわけじゃないはず。

- No.4 コメントはC++スタイルで書こう

C++スタイル(//)ならネストできるから、というだけの内容。