繁体   English   中英

什么法律代码可以触发C4523“指定多个析构函数”的Visual C ++警告?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM