《C++primer》筆記 第二章2.4const

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類型
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章