ボンジュール・マドモアゼル

本サイトの情報は自己責任にてご利用下さい。

[C++] const 修飾子

 
const修飾子は、以下のいずれかの制御を行なう。

  1. 値を変更不可とする.
    const int i = 3;
    
    int const i = 3;
  2. 参照先の値を変更不可とする.
    const int* pi = &i;
  3. ポインタそのものを変更不可とする。
    int* const pi;
  4. ポインタそのものと参照先の値の両方を変更不可とする.
    const int* const pi = &i;


const char* const **const
const char *const *const*


const修飾子が沢山ある場合には、その意味付けが
当該の変数に対して意味付けされたものか、
または、ベースとなる型について意味づけられたものかを
見分けるとわかりやすい。
ベースとなる型は、上記の例で言えば、青字の部分。


追記 '07.01.17
エキスパートCプログラミング
-知られざるCの深層
に複雑な宣言文を読み解くためのアルゴリズムが記述されている。

[プログラミング言語C++ 第3版] プログラミング言語C++ 第3版 意訳

 
「プログラミング言語C++ 第3版」にて理解し難い文を意訳する。

8.2.4.1 インタフェースのもう一つの設計方法

依存関係ということを考えるとき、コンパイラとプログラマは、“ある定義がX地点のスコープ内にあるとき、X地点で書かれたすべてのものは、その定義で規定されているあらゆるものに依存する”という少々機械的な見方をしがちだということを覚えておくことが重要である。


X地点、地点とあるが、領域である。
その領域は、スコープの占める領域である。
わかりやすく言いかえると

依存関係ということを考えるとき、コンパイラとプログラマは、“スコープ内で書かれるものは、スコープ内で定義されたすべてのものに依存する”という少々機械的な見方をしがちだということを覚えておくことが重要である。