Предвид този код (от последния ми пост тук):
const int j = 5; // constant object
const int *p = &j; // `p` is a const access path to `j`
int *q = const_cast<int *>(p); // `q` is a non-const access path to `j`
*q = 10;
cout << *q << endl;
Резултатът е: 10
Така ли трябва да бъде? Мислех, че този код трябваше да доведе до недефинирано поведение, тъй като j
е константа. Греша ли ?
Благодаря
10\n
на конзолата? и отговорът е Да. - person Ben Voigt   schedule 14.07.2012Even though const_cast may remove constness from any pointer or reference, using the resulting pointer or reference to write to an object that was declared const invokes undefined behavior.
Така че това е недефинирано поведение. Източник - person Olwaro   schedule 14.07.2012