C++相談室 part78
■ このスレッドは過去ログ倉庫に格納されています
0698デフォルトの名無しさん
2010/03/09(火) 07:49:47それは、規格の文面によって、明示的に禁止されている。
4.4 Qualification conversions [conv.qual]
なぜできないのかというと、それを用いることによって、const性に穴が生じるから。
規格のサンプルコードを、適当にコメントを補って引用すると、
int main() {
const char c = ’c’;
char* pc;
const char** pcc = &pc; // 仮に、これが許可されているとする
*pcc = &c;// ppcを介して、pcを変更している。
*pc = ’C’; // pcはconstでもないのに、constなはずのcを参照出来ているので、変更できる。
}
つまり、constなppcを介して、非constなpcを変更できてしまうので、
pcが、明示的なキャストもなしに、constなオブジェクトを参照することが可能になってしまう。
■ このスレッドは過去ログ倉庫に格納されています