摘要: 可以看到,第一次调用的是B的f(),第二次我们交换了虚表中的内容,这样发生多态的时候,实际调用的函数是A::f()。 阅读全文
posted @ 2019-03-27 15:20 newbird2017 阅读(122) 评论(0) 推荐(0) 编辑
摘要: class A{ public: virtual void f(){ cout f(); //发生了多态,这里调用的是B::f()。因为有upcast,所以是多态。 a = b; //这里只是完成了一个赋值操作 p = &a; p->f(); //调用的是A::f() return 0; } 阅读全文
posted @ 2019-03-27 14:12 newbird2017 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 多重继承情况下,看父类有没有虚函数。 sizeof(A) = 8 sizeof(B) = 8 sizeof(C) = 16 在我的64位机器上这个结果。也就是,保存了两个虚表。 接下来这种,sizeof(A) = 8, sizeof(B) = 1, sizezof(C) = 8。只保存了一个虚表。 阅读全文
posted @ 2019-03-27 10:42 newbird2017 阅读(131) 评论(0) 推荐(0) 编辑