【发布时间】:2020-01-21 08:46:43
【问题描述】:
我注意到在gcc源gcc/libstdc++-v3/libsupc++/new的目录下delete的声明是
void operator delete(void*)
void operator delete[](void*)
为什么我们可以将const ptr 传递给操作员?
const int* a = new int(1);
delete(a);
我认为void* 和const int* 是不兼容的类型。
【问题讨论】:
-
注意
deleteexpression和operator delete之间的区别。 -
构造/破坏不受 const 限制。考虑
const Foo foo;,其中Foo是一个对象类类型。结果是foo,您只能访问const成员。对象本身仍然是可构造的,也必须是可破坏的。您正在动态地进行此操作 确实是唯一的区别。编辑:很确定this is a dupe 你的问题。
标签: c++ compilation