RichardUSTC

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2013年4月21日

摘要: C++中支持多重继承,但是菱形继承会带来一些问题。比如D1和D2继承了B,而D又同时继承了D1和D2 1 class B{ 2 public: 3 int x; 4 }; 5 6 class D1:public B{ 7 }; 8 9 class D2:public B{10 };11 12 class D:public D1, public D2{13 };如果初始化一个D的对象,访问x就会产生歧义,因为D里面包含D1和D2的成员,而D1和D2各自有一份继承自B的x,编译器此时不知道该访问哪个x。而虚继承能够保证菱形继承中,父类B的成员只出现一次,避免这种歧义。1 cla... 阅读全文
posted @ 2013-04-21 16:38 RichardUSTC 阅读(140) 评论(0) 推荐(0) 编辑