[英]What legal code could trigger C4523 “multiple destructors specified” Visual C++ warning?
根据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不指定。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.