思考cost int &a = b PK const int &a = 10;架構
在C++中能夠聲明const引用spa
const Type& name = var;code
const引用讓變量擁有隻讀屬性 blog
//常引用的知識架構 int main(void) { //普通引用 int a=10; int &b=a; printf("b:%d\n",b); //常引用 int x =20; const int &y = x; //常引用 是 讓變量 引用只讀屬性 不能經過y去修改x了 //y = 21; //報錯 error: assignment of read-only reference 'y' //常引用 初始化 分爲2種狀況 //1> 用變量 初始化 常引用 { int x1 = 30; const int &y1 = x1; //用X1變量去初始化 常引用 } //2> 用字面量 初始化 常量引用 { const int a = 10; //C++編譯器把a放在符號表中 //int &m = 41; //普通引用 引用一個字面量 字面量有無內存地址 //引用 就是給內存取多個門牌號(多個別名) //printf("&41:%d\n",&41); const int &m = 43; //C++編譯器 會 分配內存空間 //43無內存空間,若放在代碼區 則放在代碼區 } return 0; }
struct Teacher1 { char name[64]; int age; }; //const引用讓變量(所指內存空間)擁有隻讀屬性 //void printTeacher(const Teacher1 *const pt) void printTeacher(const Teacher1 &pt) { //pt.age = 33; //const引用讓變量(所指內存空間)擁有隻讀屬性 printf("pt.age:%d\n",pt.age); }
const引用結論 內存
1)Const & int e 至關於 const int * const e編譯器
2)普通引用 至關於 int *const e1編譯
3)當使用常量(字面量)對const引用進行初始化時,C++編譯器會爲常量值分配空間,並將引用名做爲這段空間的別名class
4)使用字面量對const引用初始化後,將生成一個只讀變量變量