[英]c++ same name member in parent and child class
我在c++
编程中遇到了一个问题,如果在c++
父类和子类有一个同名的成员:
#include <iostream>
using namespace std;
class A{
private:
int x;
public:
A(){x=1;}
void SetX(int i)
{
x=i;
}
};
class B:public A{
private:
int x;
public:
B(){}
int GetX()
{
return x;
}
};
int main() {
B b;
cout<<b.GetX()<<endl;
b.SetX(10);
cout<<b.GetX()<<endl;
return 0;
}
程序结果是:
-858993460
-858993460
为什么?返回哪个x
?
谢谢你的帮助。
在C ++中,子类中的符号被定义为“隐藏”父类中具有相同名称的任何符号。 这样,代码所指的符号不是模糊的。 请注意,这是不可取的,因为您的代码显示的混乱!
有关键字using
,可以将某些父类符号“提升”到子类中。 但同样,在这种情况下,这是不可取的!
查看基类中的重载方法 ,但默认情况下使用成员变量作为保证using
位置的示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.