#include
int* p_n;
class A
{
public:
A(int val) : n(val)
{
// At this point the compiler does not know if the object is const or not.
p_n = &n;
}
int n;
};
int main()
{
// A::n is const, because A is const, right?
const A a(1);
// but we change a const value here
*p_n = 2;
std::cout < /p>
Отсюда: < /p>
< Blockquote>
const и летучая семантика (7.1.6.1) не применяются на строящемся объекте. Они вступают в силу, когда конструктор для наиболее полученного объекта (1.8) заканчивается.
В то время как объект A
находится в стадии строительства, он не является const и a.n не является const , но они становятся const , когда конструктор заканчивается.
Итак, p_n укажите на объект const или нет?
A(int val) : n(val) { // At this point the compiler does not know if the object is const or not. p_n = &n; }
int n; };
int main() { // A::n is const, because A is const, right? const A a(1);
// but we change a const value here *p_n = 2;
std::cout < /p> Отсюда: < /p> < Blockquote> const и летучая семантика (7.1.6.1) не применяются на строящемся объекте. Они вступают в силу, когда конструктор для наиболее полученного объекта (1.8) заканчивается.
В то время как объект A [/code] находится в стадии строительства, он не является const и a.n не является const , но они становятся const , когда конструктор заканчивается. Итак, p_n укажите на объект const или нет?