设为首页 加入收藏

TOP

2.2.6 类的继承(4)
2013-10-07 15:20:27 来源: 作者: 【 】 浏览:84
Tags:2.2.6 继承

2.2.6  类的继承(4)

虽然,多重继承使程序编写更具有灵活性,并且更能真实地反映现实生活,但由此带来的麻烦也不小。我们看例2-15所示的程序(EX07.CPP):

例2-15

  1. 1. #include <iostream.h> 
  2. 2. class B1  
  3. 3. {  
  4. 4. public:  
  5. 5.      void output();  
  6. 6. };  
  7. 7. class B2  
  8. 8. {  
  9. 9. public:  
  10. 10.     void output();  
  11. 11.};  
  12. 12.void B1::output()  
  13. 13.{  
  14. 14.     cout<<"call the class B1"<<endl;  
  15. 15.}  
  16. 16.void B2::output()  
  17. 17.{  
  18. 18.     cout<<"call the class B2"<<endl;  
  19. 19.}  
  20. 20.  
  21. 21.class A:public B1,public B2  
  22. 22.{  
  23. 23.public:  
  24. 24.     void show();  
  25. 25.};  
  26. 26.void A::show()  
  27. 27.{  
  28. 28.     cout<<"call the class A"<<endl;  
  29. 29.}  
  30. 30.void main()  
  31. 31.{  
  32. 32.     A a;  
  33.         a.output();         //该语句编译时会报错  
  34. 33.     a.show();  
  35. 34.}  

例2-15的程序乍一看,好像没有错误,但是,编译时就会出错。原因何在?由第21行代码我们知道派生类A是从基类B1和B2多重继承而来的,而基类B1和B2各有一个output()函数,在第33行,当类A的对象a要使用a.output()时,编译器无法确定用户需要的到底是哪一个基类的output()函数,而产生'A::output' is ambiguous的错误信息,请读者注意。
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇2.2 C++的特性(1) 下一篇2.2.6 类的继承(3)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: