C++中的虚继承,virtual你妹呀!关于这个虚继承,真是挨千刀的家伙,每次遇到笔试题,真是必考呀,你说都不能换
C++中的虚继承,virtual你妹呀!
关于这个虚继承,真是挨千刀的家伙,每次遇到笔试题,真是必考呀,你说都不能换个花样吗?真心的容易出错,今天特意来做个总结,让这个挨千刀的家伙,去死去吧!虚函数概念就不多介绍了,主要的作用就是实现多态。先看一段代码:
class A{public :virtual void get(){cout<<"A"<<endl;}};class B:public A{public :virtual void get(){cout<<"B"<<endl;}};int main(){A *pa=new A();pa->get();B *pb=(B*)pa;pb->get();delete pa,pb;pa=new B();pa->get();pb=(B*)pa;pb->get();return 0;}输出: A A B B
以上两个例子都是关于虚函数覆盖虚函数的问题。 B *pb=(B*)pa; 这个我们看到强制转换,但是pa这个指针并没有发生改变,所指向的内容也没有发生改变,所以我们知道pb指向的依然是pa所指向的内容。
delete pa,pb。删除了pa,pb所指向的地址,但是pa,pb并没有被删除,属于悬挂指针。我们重新给pa赋值,指向B,故pa->get();输出了B
