繁体   English   中英

C ++错误:将'〜Destructor'声明为'Class'的成员

[英]C++ error: declaration of ‘~Destructor’ as member of ‘Class’

我使用g++ -Wall -Werror *.cpp并得到以下错误:

ConcreteCharArray.h:21:15: error: declaration of '~CharArray' as member of 'ConcreteCharArray'

具体实现:

class ConcreteCharArray: public CharArray
{
private:
    char * charArray;
public:
   ~CharArray() {
      delete[] string;
   }
};

虚拟课:

class CharArray
{
public:
   virtual ~CharArray() {};
};  

在名为ConcreteCharArray的类中声明名为~CharArray的成员完全是非法的,这就是编译器告诉您的。 ~的存在表示您正在声明一个析构函数,并且析构函数的名称必须与该类的名称匹配。

析构函数是特殊的成员函数。 它们的特殊属性之一是,为了覆盖基类的虚拟析构函数,您不必在派生类中匹配该析构函数的名称(通常与普通成员函数一样)。 即使它们的名称不同,编译器也会自动将析构函数彼此匹配。 这很容易做到,因为每个类都有一个而且只有一个析构函数。

因此,如果要在类ConcreteCharArray声明一个析构函数,则必须调用该析构函数~ConcreteCharArray 没有其他选择。 即使派生的析构函数的名称与基本的析构函数的名称不同,派生的析构函数也将被视为虚拟的,并将覆盖基本的析构函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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