关于一个指针和继承的有关问题,小弟我想问问大家,为什么输出的是这样的

关于一个指针和继承的问题,我想问问大家,为什么输出的是这样的?先上代码吧!C/C++ code#includeiostreamu

关于一个指针和继承的问题,我想问问大家,为什么输出的是这样的?
先上代码吧!

C/C++ code
#include<iostream>using namespace std;class A{    public:virtual void print(void)        {            cout<<"A::print()"<<endl;        };};class B:public A{    public:virtual void print(void)        {            cout<<"B:print()"<<endl;        };};class C:public A{    public:void print (void)        {            cout<<"C:print()"<<endl;        };};void print(A a){    a.print();}int main(void){    A a,*pa,*pb,*pc;    B b;    C c;    pa=&a;    pb=&b;    pc=&c;    a.print();    b.print();    c.print();    pa->print();    pb->print();    pc->print();    print(a);    print(b);    print(c);    return 0;}


以上代码的输出结果是:
A::print()
B::print()
C::print()
A::print()
B::print()
C::print()
A::print()
A::print()
A::print()
前六个我还能明白,可是为什么接下来三个全输出A::print()呢,有知道的帮忙解答一下吧,不胜感激。

[解决办法]
由于对象的静态类型与动态类型一样,所以通过对象无法体现出多态的特性,只有指针和引用才能体现。
[解决办法]
就是C++中的多态是通过指针和引用来实现的,你的全局函数print的参数是一个对象,不能动态调用各类中的成员函数
[解决办法]
C++中的多态是基于指针/引用的。