一道c++继承相关的疑问

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就是你想要的了