玩完放置/删除后,我想出了这段代码,对我来说,编译和运行(至少在gcc和clang上):
int main()
{
struct A{};
A a;
const A& b = a;
b.~A();
}
我测试了更复杂的版本,例如A的析构函数调用非const限定的成员。 这种能力是否有充分的理由从const引用中调用析构函数?
答案 0 :(得分:0)
析构函数总是隐式const。您可以通过常量指针和引用删除对象。从C ++ 11开始,您还可以通过常量迭代器擦除容器元素。
const A* a = new A();
delete a; // OK. Deletes pointed const object, implicitly calls destructor.