繁体   English   中英

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

[英]How to access parent class's data member from child class, when both parent and child have the same name for the dat member

我的情况如下::

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”。

几乎得到了它:

this->x = Parent::x;

this是一个指针。

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

x = Parent::x;

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

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

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

此页面提供了更多详细信息。 您可以将此运算符与类名( Parent )组合以访问父x变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM