2
4

1 回答 1

4

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

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

所以,如果你想在类中声明一个析构函数,ConcreteCharArray你必须调用那个析构函数~ConcreteCharArray。没有其他选择。即使派生析构函数的名称与基析构函数的名称不同,派生析构函数将被视为虚拟并覆盖基析构函数。

于 2013-09-15T02:10:30.197 回答