LINUX.ORG.RU

[C++]const_cast. Тупняк? Компилятор?

 


0

1

Допустим код

const int p = 100;
int* j = const_cast<int*>(&p);
*j = 555;
cout << p << endl;
cout << *j << endl;
почему при выводе значения p выводится 100, а не 555?! Я так понимаю компилятор оптимизирует так это дело.

З.Ы. плюсы особо не знаю, но стало интересно.

afaik, «&p» это не «const int *», а «int * const».

arsi ★★★★★
()
Ответ на: комментарий от Boy_from_Jungle

Об этом уже в стандарте написано, анон подсказал :)

yoghurt ★★★★★
()
Ответ на: комментарий от anonymous

ISO/IEC 14882 7.1.5.1 3

Для тех, у кого нет стандарта под рукой:

7.1.5.1 The cv-qualifiers [dcl.type.cv]

1) There are two cv-qualifiers, const and volatile. If a cv-qualifier appears in a decl-specifier-seq, the init-declarator-list of the declaration shall not be empty. [Note: 3.9.3 describes how cv-qualifiers affect object and function types. ]

...

3) A pointer or reference to a cv-qualified type need not actually point or refer to a cv-qualified object, but it is treated as if it does; a const-qualified access path cannot be used to modify an object even if the object referenced is a non-const object and can be modified through some other access path. [Note: cv-qualifiers are supported by the type system so that they cannot be subverted without casting (5.2.11). ]

runtime ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.