void print_func(A* p)
{
        p -> print();
}
int main()
{
        A a(1);
        B b(2,3);

        //a.print();
        //b.print();

        print_func(&a);// 这两个调用的都是a的print
        print_func(&b);

        a = b;
        a.print();

        return 0;
}

B*这个类型会被当成A*来访问。所以调用的是A的print。

因为这个寻址,不是用虚表寻址,而是编译器做的静态绑定。

posted on 2019-03-26 14:49  newbird2017  阅读(108)  评论(0编辑  收藏  举报