const とポインタ
下のように const
は型名の前後どちらに書いても同じです。
const int a = 1;
int const b = 2;
Bjarne Stroustrup’s C++ Style and Technique FAQ では、前者がわかりやすくおすすめとされていますが。
では、ポインタについてはどうでしょうか?
const int* pa = new int(10); // "const な int" へのポインタ
int const* pb = new int(11); // "const な int " へのポインタ
int* const pc = new int(12); // int への "const なポインタ"
一つ目と二つ目は同じです。では、どのような挙動になるのでしょうか?
// *pa = 20; // エラー! "const な int" の値を変えることはできない
// *pb = 21; // エラー! "const な int" の値を変えることはできない
*pc = 23;
delete pa; // delete はできる
delete pb; // delete はできる
delete pc;
pa = NULL;
pb = NULL;
// pc = NULL; // エラー!ポインタ自体が const なため
というような感じになります。普通は const int* pa
の方を使う機会が多いような気がしますね。