constが変更された変数は、関数のパラメータ、戻り値、さらには関数定義本体を変更することができます。
1.const修正関数パラメータ
パラメータを渡すconstが、入ってくるパラメータが変更されている防ぐ保護的な役割を果たしているように変更することができます。
しかし、それは「価値の移転」、CONSTと修正なしの場合。関数が自動的に生成されますので、一時的な変数は、パラメータをコピーするために使用されます。
void func(int x){}//就不用写成void func(const int x)
以下のようなパラメータの非イントラデータ型のためのvoid func(A a)
このような比較的低いの関数宣言効率。関数呼び出しは、構成内のパラメータ、および一時オブジェクトをコピーするためのタイプAの一時オブジェクトを持つことになりますので、複製及び破壊のプロセスは効率が悪く、時間がかかります。参照機能を渡すことで、効率を向上させる、関数の宣言はこのように書くことができることができvoid func(A &a)
、変数に一時オブジェクトを生成する必要がちょうど別名を引用していません。しかし、入ってくる参照は、私たちが見てみたいしない、パラメータを変更することができますので、我々のようなconst参照型を、使用する必要がありますvoid func(const A &a)
。
2.const変数
変数や共通の変数constがお互いに初期化することができます
const int a = 10;
int b = 20;
int c = a;
const int d = b;
またはconst参照変数とポインタ変数は、CONST変数の初期化と共通であってもよいが、一般的な参照変数とポインタは、唯一の共通変数を初期化するために使用することができます。
const int a = 10;
int b = 10;
const int &c = a;
const int &d = b;
int &e = b;
int &e = a;//错误