析构函数是否可以超载?

时间:2011-06-05 14:45:20

标签: c++ syntax destructor overloading

enable_if doc page说:

  

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

析构函数是否可重载?

3 个答案:

答案 0 :(得分:18)

No


答案 1 :(得分:7)

  

析构函数是否可重载?

答案很简单 两个版本的desturctor不能在class正文中共存。

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

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

语法-2不太受欢迎。但如果基类析构函数包含类似的语法,则必须使用它。最好的例子是inheriting std::exception

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

  

错误:'virtual E :: ~E()'

的looser throw说明符

答案 2 :(得分:0)


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

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

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