C++中,为什么在子类中不能直接显式调用父类的析构函数,而要加上作用域限定符?
我听过一种说法, 在C++中所有析构函数都会被编译器处理成destructor,因此父类和子类的析构函数名字相同,构成重定义(隐藏),是这样吗?
#include <iostream>
struct base {
base() { std::cout << "base default \n"; }
~base() { std::cout << "~base \n"; }
};
struct derived : base {
derived() { std::cout << "derived default \n"; }
~derived()
{
//~base();不行
base::~base();
std::cout << "~derived \n";
}
};