我写了一个小问题来检查 const 数据成员上 const_cast 的行为。
using namespace std;
class myString{
public:
myString(char * str)
{
p=str;
}
const char * getString(){
return p;
}
private:
const char *p;
} ;
int main()
{
char *p=(char*)malloc(8);
cin>>p;
myString *m= new myString(p);
char *s =const_cast<char*>(m->getString());
s[6]='y';
cout<<s<<endl;
return 0;
}
运行此程序后,我将输出作为“yogendra”(一个 8 个字母的字符串)。我得到的输出是“yogendya”现在我的怀疑。通过 const_cast<> 我们可以覆盖数据成员本身的行为,因为这里的字符串是 const char* 在转换之后我仍然可以修改它。