在 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();No
base::~base();
std::cout << "~derived \n";
}
};
我知道在实践中几乎没有必要这样做,我只是想了解原理......