常量引用

思考cost int &a = b PK const int &a = 10;架構

C++中能夠聲明const引用spa

const Type& name = varcode

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引用結論  內存

1Const & int e  至關於 const int * const e編譯器

2)普通引用 至關於 int *const e1編譯

3)當使用常量(字面量)對const引用進行初始化時,C++編譯器會爲常量值分配空間,並將引用名做爲這段空間的別名class

4)使用字面量對const引用初始化後,將生成一個只讀變量變量

相關文章
相關標籤/搜索