相关疑难解决方法(0)

如果更改const对象是未定义的行为,那么构造函数和析构函数如何使用写访问操作?

C++标准说修改最初声明的对象const是未定义的行为.但那么构造函数和析构函数如何运作?

class Class {
public:
    Class() { Change(); }
    ~Class() { Change(); }
    void Change() { data = 0; }
private:
    int data;
};

//later:
const Class object;
//object.Change(); - won't compile
const_cast<Class&>( object ).Change();// compiles, but it's undefined behavior
Run Code Online (Sandbox Code Playgroud)

我的意思是构造函数和析构函数与调用代码完全相同,但是允许它们更改对象并且不允许调用者 - 他会遇到未定义的行为.

它应该如何在实施和标准下工作?

c++ constructor destructor const undefined-behavior

9
推荐指数
1
解决办法
1379
查看次数

标签 统计

c++ ×1

const ×1

constructor ×1

destructor ×1

undefined-behavior ×1