C++11 即使类仅由智能指针组成,我们是否应该delclare/定义析构函数?
这是多余的吗 我们应该像下面那样显式地编写析构函数吗C++11 即使类仅由智能指针组成,我们是否应该delclare/定义析构函数?,c++11,smart-pointers,unique-ptr,C++11,Smart Pointers,Unique Ptr,这是多余的吗 我们应该像下面那样显式地编写析构函数吗 class A{ public: A():p(nullptr){}; private: std::unique_ptr<B> p; // B is some class }; 不。智能指针的全部意义在于,内存是自动为您管理的 这是多余的吗 不,这是未定义的行为-将执行“双重自由”。即使为a提供析构函数,也会调用p的析构函数。ptr未声明。如果你的意思是p,p不是一个原始指针。我调试了它
class A{
public:
A():p(nullptr){};
private:
std::unique_ptr<B> p; // B is some class
};
不。智能指针的全部意义在于,内存是自动为您管理的
这是多余的吗
不,这是未定义的行为-将执行“双重自由”。即使为
a
提供析构函数,也会调用p
的析构函数。ptr
未声明。如果你的意思是p
,p
不是一个原始指针。我调试了它:-9
~A(){
delete p;
}