当父类和子类具有相同的dat成员名称时,如何从子类访问父类的数据成员

时间:2012-07-17 15:04:38

标签: c++ visual-c++ inheritance public

我的场景如下::

class Parent
{
public:
int x;
}

class Child:public Parent
{
int x; // Same name as Parent's "x".

void Func()
{
   this.x = Parent::x;  // HOW should I access Parents "x".  
}
}

这里是如何从Child的成员函数访问Parent的“X”。

3 个答案:

答案 0 :(得分:10)

几乎得到了它:

this->x = Parent::x;

this是指针。

答案 1 :(得分:3)

通过范围解析运算符访问它将起作用:

x = Parent::x;

但是,我会质疑你想在什么情况下这样做。您的示例使用公共继承来模拟“is-a”关系。因此,如果您的对象符合此条件,但具有不同值和/或不同含义的相同成员,则此“is-a”关系会产生误导。可能存在一些适当的边缘情况,但我会说它们绝对是规则的例外。每当你发现自己这样做时,请仔细思考为什么

答案 2 :(得分:0)

这只是对Luchian Grigore和Anubis先生提供的解决方案的简要解释,所以如果你对“这是如何工作”感到好奇,你应该进一步阅读。

C ++提供了一个所谓的“范围操作符”(::),它非常适合您的任务。

this page提供了更多详情。您可以将此运算符与类名(Parent)组合以访问父级的x变量。