C++ 堆和堆栈上的私有析构函数
这会抛出一个错误,说明析构函数是私有的C++ 堆和堆栈上的私有析构函数,c++,C++,这会抛出一个错误,说明析构函数是私有的 我很困惑-在调用free()之前不在内部删除也调用析构函数?非常类似于b是指向base的指针。它的析构函数是公共的。尝试derived*d=new-derived();删除d认为C++封装不像“监狱”,而是一个标签“请不要打扰”。而虚拟函数是一个关键。C++中的访问控制一般适用于名称。 class base { public: virtual ~base() = 0; }; base::~base() { cout <<"De
我很困惑-在调用free()之前不在内部删除也调用析构函数?非常类似于
b
是指向base
的指针。它的析构函数是公共的。尝试derived*d=new-derived();删除d代码>认为C++封装不像“监狱”,而是一个标签“请不要打扰”。而虚拟函数是一个关键。C++中的访问控制一般适用于名称。
class base
{
public:
virtual ~base() = 0;
};
base::~base()
{
cout <<"Destructing base"<<endl;
}
class derived : public base
{
~derived()
{
cout <<"Destructing derived"<<endl;
}
};
int main()
{
base* b = new derived();
delete b;
b = 0;
}
int main()
{
derived d;
}