根据 MSDN,Visual C++ 可以发出 C4523 警告 'class':指定了多个析构函数。这种情况怎么可能?
我尝试了以下方法:
class Class {
~Class();
~Class(int);
};
这会产生 析构函数必须具有“void”参数列表错误和 C4523 警告以及以下内容
class Class {
~Class();
~Class();
};
这会产生成员函数已经定义或声明错误和以下
class Class {
int ~Class();
~Class();
};
这会产生 析构函数不能有返回类型错误。
那么我如何得到 C4523 警告而没有错误呢?
以下内容会导致警告 C4523,但前面也会出现错误
struct Foo
{
~Foo() {}
~Foo() const {}
};
error C2583: 'Foo::~Foo' : 'const' 'this' pointer is illegal for constructors/destructors
warning C4523: 'Foo' : multiple destructors specified
这是多个析构函数是错误而不是警告的另一个示例:
class C
{
~C();
~C() volatile;
};
大胆猜测:可能是通过多类继承吗? 假设类 C 继承自类 A 和 B,并且 A 和 B 指定了析构函数,但 C 没有。