15

enable_if 文档页面说:

构造函数和析构函数没有返回类型;额外的参数是唯一的选择。

析构函数可以重载吗?

4

3 回答 3

22


      

于 2011-06-05T14:46:48.573 回答
8

析构函数可以重载吗?

答案很简单两个版本的析构函数不能在一个主体
中共存。class

然而,与流行的看法不同,请注意析构函数确实有两种语法。

struct E {
  ~E();  // syntax-1
  ~E() throw(); // syntax-2
};

Syntax-2 不太受欢迎。但如果基类析构函数包含类似的语法,则它是强制性的。最好的例子是继承std::exception

请注意,不遵守此类语法会导致:

错误:'virtual E::~E()'的更宽松的抛出说明符</p>

于 2013-04-06T07:07:10.743 回答
1


为什么?
因为析构函数不带任何参数并且要重载任何函数,所以你有两个条件:

  1. 函数必须有不同数量的参数
  2. 函数必须有不同类型的参数

但是由于析构函数没有任何参数,我们不能重载它们。

于 2021-07-14T16:46:47.607 回答