class A
{
public:
A(int a)
{
x = a;
}
virtual void show()const
{
cout << x;
}
private:
int x;
};
class B :public A
{
int y;
public:
B(int a, int b) :A(a)
{
y = b;
}
void show()
{
A::show();
cout << y;
}
};
class C:public B
{
int z;
public:
C(int a, int b, int c) :B(a, b)
{
z = c;
}
void show()
{
B::show();
cout << z;
}
};
void show(A* pa)
{
pa->show();
}
void main()
{
A a(1);
B b(2, 3);
C c(4, 5, 6);
show(&a);
show(&b);
show(&c);
}
输出的是124;
B类和C类中又分别有一个A::show();和 B::show(); 最终调用的都是A中的show函数吗?
为什么B类和C类中show函数中的cout << y;和cout << z;都没有输出呢?不是总共应该输出6个数的吗?
麻烦各位看看 谢谢!!
因为你类A的函数是多了const修饰的
void show()const
而子类重写的是void show()
void show()const 和void show()是不一样的
去掉const或者子类都加上const就是你想要的了