c++primer:
一个基类总是需要析构函数,而且它能将析构函数设定为虚函数。此时,该析构函数为了成为虚函数而令内容为空。
也就是说虚析构函数一定是这样的形式喽?
virtual ~Deconst()=default;
难道就不能有{ }包围的函数体吗?
c++primer:
一个基类总是需要析构函数,而且它能将析构函数设定为虚函数。此时,该析构函数为了成为虚函数而令内容为空。
也就是说虚析构函数一定是这样的形式喽?
virtual ~Deconst()=default;
难道就不能有{ }包围的函数体吗?
=default
不是为空, 而是使用默认行为, 还是调用会成员的析构函数, 这一点跟直接写{}没什么本质区别.
virtual ~Deconst()=default;
virtual ~Deconst() {}
2 回答1.7k 阅读✓ 已解决
2 回答1k 阅读✓ 已解决
1 回答1.6k 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
1 回答931 阅读
1 回答1.1k 阅读
2 回答1.1k 阅读
楼上的说的比较清楚了,default会让编译器给你加上一个{}。
如果你的这个类持有了一些资源,虚析构函数也不应当为空,
需要做一些清理工作。例如:
如果A是作为一个父类,那么它的析构函数尽量声明为virtual以避免
以下的情况出现: