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