2012年6月7日木曜日

C/C++のポインタやリファレンスに関する悩みどころ

悩ましいのはポインタとリファレンスの使い分けとかではなく、記述の問題。

C/C++のポインタ変数の宣言には、大まかに分けて2つの流儀がある(と思う)。1つは
int *p;
もう1つは
int* p;
違いはスペースの位置。個人的には前者のスタイルなのだが、これは*が変数を修飾するものだから、という理由。後者のスタイルでは、*はintという型を修飾するものだという考え方なのだろう。
int *p, i;
という変数宣言では*は変数pのみを修飾しているので、この点からは前者が正しいように見える。ところが
(int *) xx
reinterpret_cast<int *>(xx)
のようなキャスト演算では、*は明らかにintを修飾している。なので、結局どちらとも言い切れないのが、この悩ましさの元凶なんだよなぁ。

C++リファレンスを表す&も同様なんだけど、こっちは
int& r = i;
のように型に付ける方が主流派な気がして、変数修飾派はなんとなく肩身が狭い。

0 件のコメント:

コメントを投稿