1.constant常量聲明的時候必須要初始化
例如:
const int buf=1024;
//此時buf不再是變量而是一個常量,符合常量的原則
2.對const常量的引用(reference to const)
引用常量本質上是綁定了一個常數。
常量的引用也必須是常量 因此具有該格式:
const int buf=1024;
const int &r=buf;//引用也必須爲常量,格式與引用對象相同
//引用r,因此不能對r進行賦值的更改(因爲是常量),也不能進行對象更改(因爲是引用)
本質上常量引用r綁定的是1024,而非buf;
2.1常量引用的初始化
int a=1;
const int &r1=a;//允許,常量引用可以被變量初始化;
const int &r2=12;//允許,常量引用可以被常量初始化;
//需要注意的是一般的引用是不能被常量初始化的;
//而常量引用可以被常量初始化,即將常量引用綁定到了一個常量上(符合邏輯)
2.2指向常量的指針(pointer to const)
int a=1;
int b=1024
const double* ptr=b;//常量的是double,因此內容不能改變即*ptr是個常量不能改變
ptr=&a;//允許,因爲指針ptr並不是常量,地址是可以改變的
2.3常量指針(const pointer)
與常量引用類似,顧名思義,指針爲常量,因此const的對象爲ptr
int a=1;
double* const ptr=&a;//常量的對象是個指針因此ptr永遠指向a的地址;
//此時可以修改*ptr的值
const double* const ptr1=a;//指針指向的地址和指針內容都爲常量
//因此不發更改指針和內容
3.const 的拷貝
注意拷貝是變量給變量,變量給常量的內容複製
賦值爲常數給變量或者常量的內容賦予
規則:
- 可以將非常量數複製給常量例如
int a=1;const int b=a;
- 絕對禁止常量賦值給非常量,const類型無法拷貝給非const類型