C ++ 2.4のconst修飾子定数ポインタ - constのトップ、一定の指針 - 下のconst


constが定数であります

例えば
const int con = 1024;int型の定数の定義の
不変変数詐欺の値

機能の割り当て

const int con = func();

連続変数を宣言します

constの宣言連続変数は、有効な場合

const int con1=1, con2=2, con3=3;

CON1、CON2、CON3は定数であります


const参照やconst型&

定数自体に一定の基準点も一定でなければなりません。
参照変数を変更することはできません。

const int con1 = 1024;
const int &con2 = con1; //对常量的引用,简称常量引用,也必须是一个常量
const int &con3 = 1024; //常量引用,可以赋上一个字面值。而非常量引用是不行的
int cVal = 1;
const int &con4 = cVal; //常量引用,可以赋值一个非常量的变量

注、CON4は、大きな値に割り当てられます。CON4自体を変更することはできませんが、非常に大きさの点では、変数です。非常に値を変更します。

cVal = 197;
cout << con4 << endl;   

出力197

定数自体に一定の基準点も一定でなければならない
変化の大きさは、非常に、基準値が変更されている、一定のconst基準点
ポイントの値を変更するためにそれ自体ではありません


constポインタ

constポインタ:const型*

定数ポインタは、基本的にポインタです。宣言の定義:最初の文字定数のconstが、ポインタ型が続きます。
定数ポインタ自体を指していることは一定でなければなりません。
しかし、ポインタ変数自体を再割り当てすることができます。

const int con1 = 1024;
const int *con2 = &con1; //指向常量的指针
int cVal = 1;
const int *con3 = &cVal;  //指向非常量的指针

int cVal2 = 197;
con2 = con3 = &cVal2;
cout << *con2 << endl;
cout << *con3 << endl;

上記のように、のような形const type *の点が一定であるかどうか、量は非常にあり、変数の定義。再指定されたアドレスのポインティングすることができます。
符号ポインタソリューションによって元の値を指すように変更、それは受け入れられません。*con3 = 200;//error

ポインタ定数:タイプ* constの

ポインタ定数。それは本質的にポインタ型である定数です。宣言定義:最初のポインタ型は、一定文字CONSTが続きます。
あなたが定義する際には、初期化する必要があります。ポインタが一定であるため、それを再割り当てすることはできませんので、それは常にアドレスの初期値を指します。

int con1 = 1024;
int *const con2 = &con1; //常量指针
int cVal = 1;
*con2 = 10;
con2 = &cVal;  //error

上記、CON2のアドレスを変更することはできませんが、アドレスポイントの値が変数です。

不変ポインタ自体、およびしないアドレスポイント値変数:const型のconst *

総合二つの定義上で、

int con1 = 1024;
const int *const con2 = &con1;
int cVal = 1;
*con2 = 10; //error
con2 = &cVal; //error

上記、CON2のアドレスが変更され、そしてないアドレスポイント値の変数を行うことはできません。


上部と下部のconstのconst

トップCONST(トップレベルCONST)は、それ自体が一定で表す
点で表される(低レベルCONST)が一定である根底CONST
人気話す、
変数自体が変更されていないトップCONST、すなわち(ポインタ又は参照、または他のタイプ);
底CONST可変点不変オブジェクトの、即ち、(ポインタまたは参照のまたは他のタイプ)の値。

ポインタの場合:
型トップ層がCONST *であり、
constの*は、基になるタイプです。
それへの参照:
タイプのCONST&根底されます。(この規定は、私も非常に驚いていますので。もちろん、あなたがオブジェクト参照の値を変更することはできません、自分自身を変更しないで、定数と非定数への、および一定の基準変数によって指し示すことができるだけで、これは指定された死んでいると言うことができます)

唯一のトップ層は、下のconstがあります:

const int *const ccp = &cv;//左边是 low const,右边是 top const;

cpp11:constexprの定数式

追加cpp11キーワードはconstexpr、定数、関数と定数を宣言するために使用することができます。

constexpr int rv() {
    return 100;
}
constexpr int xd = 88;
constexpr int xxd = rv();

コンパイルの検証時にコンパイラは、定数の定義が正しいです。
一定の値がコンパイル時に決定されるので、定数式の非基本的なタイプのために利用可能です。ポインタ型と同様に十分ではありません

公開された400元の記事 ウォンの賞賛364 ビュー162万+

おすすめ

転載: blog.csdn.net/jjwwmlp456/article/details/89608121