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* であるため、キャスト後も変更できます。