在以下代码中:
struct X{
void stream(int){}
};
struct Y : public X{
void stream(int, int){}
};
int main()
{
Y y;
y.stream(2);
}为什么X::stream(int)不被继承?
或者它隐藏着Y::stream(int, int)。如果是这样的话,为什么它隐藏,而不是被覆盖?
发布于 2014-06-22 18:13:41
派生类中的名称确实会在基类中隐藏相同的名称。这是故意的。如果基类发生了更改,您就不会突然和默默地希望在派生类中看到不同的重载设置。
若要显式地取消隐藏基名,请将using X::stream;添加到派生类中。
https://stackoverflow.com/questions/24354182
复制相似问题