首页 > 其他 > 详细

非virtual函数,用指针进行upcast

时间:2019-03-26 15:12:29      阅读:140      评论:0      收藏:0      [点我收藏+]
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。

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

非virtual函数,用指针进行upcast

原文:https://www.cnblogs.com/buddho/p/10600086.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!