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