相关疑难解决方法(0)

通过const指针修改使用new创建的对象是否合法?

所以这个答案让我想到了将结果赋给new指向a的指针的场景const.AFAIK,没有理由你不能合法地 const_cast将constness带走并在这种情况下实际修改对象:

struct X{int x;};

//....
const X* x = new X;
const_cast<X*>(x)->x = 0; // okay
Run Code Online (Sandbox Code Playgroud)

但后来我想 - 如果你真的想new创建一个const对象怎么办.所以我试过了

struct X{};

//....
const X* x = new const X;
Run Code Online (Sandbox Code Playgroud)

它编译!!!

这是GCC扩展还是标准行为?我在实践中从未见过这个.如果它是标准的,我会尽可能地开始使用它.

c++ const language-lawyer

15
推荐指数
2
解决办法
662
查看次数

标签 统计

c++ ×1

const ×1

language-lawyer ×1