一路关于继承的题目
一道关于继承的题目
上面这个程序输出的是12,但是第一个为什么输出1,不明白,求解答
------解决思路----------------------
创建B对象的时候,因为B类继承A类,所以会先调用A的构造函数,初始化 _a为1,然后再调用B的构造函数,B的构造函数中的_a和A类的_a没有关系,或者说在B类的成员函数中,A的_a被隐藏了。调用B的printt时,因为继承了A的print,所以print中的_a是A类的_a,而不是B类的对象。
------解决思路----------------------
print只认识A,不认识B的成员
class A
{
public:
int _a;
A()
{
_a=1;
}
void print()
{
cout<<_a<<endl;
}
};
class B : public A
{
public:
int _a;
B()
{
_a=2;
}
};
int main()
{
B b;
b.print();
cout<<b._a<<endl;
return 0;
}
上面这个程序输出的是12,但是第一个为什么输出1,不明白,求解答
------解决思路----------------------
创建B对象的时候,因为B类继承A类,所以会先调用A的构造函数,初始化 _a为1,然后再调用B的构造函数,B的构造函数中的_a和A类的_a没有关系,或者说在B类的成员函数中,A的_a被隐藏了。调用B的printt时,因为继承了A的print,所以print中的_a是A类的_a,而不是B类的对象。
------解决思路----------------------
print只认识A,不认识B的成员