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