【发布时间】:2016-09-20 14:45:48
【问题描述】:
这是关于 C++(不是 java)的继承和变量名的歧义。
假设我处于这种情况:
class A{
public:
void fct(){do something with x;}
private:
int x;
};
class B: public A{
private:
int x;
};
如果我定义了派生类的一些实例
B foo;
然后调用
foo.fct();
fct() 会根据A::x 或B::x 行事吗?
我希望它对A::x 起作用。我想知道在类 A 中将 x 声明为私有是否足以使其免受定义派生类时可能出现的不需要的歧义。
我知道为B::x 使用不同的名称是最好的办法...但是假设一个人“分心”并忘记了私人A::x 的存在,后果会有多糟糕?
谢谢!
【问题讨论】:
标签: c++ variables inheritance private