gpt4 book ai didi

c++ - 重新定义析构函数时的标准析构函数

转载 作者:太空宇宙 更新时间:2023-11-04 15:02:35 26 4
gpt4 key购买 nike

即使我在 C++ 中为类重新定义了析构函数,是否可以调用默认析构函数?例如,如果我有两个类(class)

class B{
...
};

class A{
private:
B* p;
public:
A(B b):p(new B(b)){...}
...
~A(){delete p;}
};

而且我并不总是想删除 p 指向的对象。

最佳答案

假设“标准析构函数”是指编译器默认生成的析构函数,答案是否定的。因为您定义了自己的析构函数,所以编译器根本不会生成默认析构函数。无论如何,析构函数并不意味着像普通函数一样被“调用”(除非您正在实现类似于 STL 容器的东西)。

如果您需要析构函数在不同情况下执行不同的操作,请在析构函数中放置一个 if(),并让对象跟踪 if() 条件所需的任何信息。无论如何,这可能是一个更好的设计。

关于c++ - 重新定义析构函数时的标准析构函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28118281/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com