如果在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
?
感谢您的帮助。
答案 0 :(得分:8)
答案 1 :(得分:1)
在C ++中,子类中的符号被定义为“隐藏”父类中具有相同名称的任何符号。这样一来,代码所指代的符号就不会模糊。请注意,这是不可取的,因为您的代码正好会造成混乱!
有关键字using
,可以将某些父类符号“提升”到子类中。但是,在这种情况下,不建议这样做!
以Overloading method in base class, with member variable as default为例,说明需要使用using
的地方。