c++ 類型轉換const_cast(num);

const_cast<type id>(num);他的作用就是把const去掉,讓變量可以被修改,但是他們的地址仍然是相關的.

直接說正題把.有沒有遇到這樣的問題,

string miss(const string &str,const string &str1)

{

    return (str.size()>str1.size())?  str:str2;

}

你的輸入形參是常引用,但是返回數值卻不是.說道這你可能知道我要說神魔了,

const_cast<type id>(num);

舉例說明:

   const int name=10;

   int name1=name;

  編譯並沒有錯誤;他只是簡單的賦值,兩者並沒有關聯.

  const int name=10;

  int &name1=name;

編譯錯誤;因爲引用意味着兩者是相關聯的,

錯誤:將類型爲‘int&’的引用初始化爲類型爲‘const int’的表達式無效 int &name1=name;

正確方法:

    const int name=10;
    const  int &name1=name;
    int &name3=const_cast<int&>(name1);

    int name4=111;

    name3=name4;

    cout<<"name:"<<name<<":"<<&name<<endl;           //10     
    cout<<"name1:"<<name1<<":"<<&name1<<endl;     //111
    cout<<"name3:"<<name3<<":"<<&name3<<endl;     //111


          name:10:      0x7ffe3b31c58c
         name1:111:   0x7ffe3b31c58c
         name3:111:   0x7ffe3b31c58c

可能編譯器不同,結果不同.編譯器:g++         環境:linux


  


    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章