当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:55:00  来源:本站整理

C++箴言:谨严利用多担当[VC/C++编程]

赞助商链接



  本文“C++箴言:谨严利用多担当[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

触及 multiple inheritance (MI)(多担当)的时刻,C++ 社区就会鲜明地分裂为两个基本的阵营.一个阵营认为假如 single inheritance (SI)(单担当)是有好处的,multiple inheritance(多担当)一定更有好处.另一个阵营认为 single inheritance(单担当)有好处,但是多担当惹起的麻烦使它得不偿失.在本文中,我们的主要目的是理解在 MI 问题上的这两种见解.

主要的事情之一是要承认当将 MI 引入计划范畴时,就有大概从多于一个的 base class(基类)中担当相同的名字(比方,函数,typedef,等等).这就为歧义性供应了新的机会.比方:

class BorrowableItem { // something a library lets you borrow
public:
 void checkOut(); // check the item out from the library
 ..
};
class ElectronicGadget {
private:
 bool checkOut() const; // perform self-test, return whether
 ... // test succeeds
};
class MP3Player: // note MI here
public BorrowableItem, // (some libraries loan MP3 players)
public ElectronicGadget
{ ... }; // class definition is unimportant
MP3Player mp;
mp.checkOut(); // ambiguous! which checkOut?

注意这个例子,即便两个函数中只有一个是可拜候的,对 checkOut 的调用也是有歧义的.(checkOut 在 BorrowableItem 中是 public(公有)的,但在 ElectronicGadget 中是 private(私有)的.)这与 C++ 解析 overloaded functions(重载函数)调用的法则是一致的:在看到一个函数的能否可拜候之前,C++ 首先肯定与调用匹配最好的那个函数.只有在肯定了 best-match function(最佳匹配函数)之后,才查抄可拜候性.这目前的情形下,两个 checkOuts 具有相同的匹配程度,所以就不存在最佳匹配.因此永久也不会查抄到 ElectronicGadget::checkOut 的可拜候性.


  以上是“C++箴言:谨严利用多担当[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: 与您的QQ/BBS好友分享!
  • 好的评价 如果您觉得此文章好,就请您
      0%(0)
  • 差的评价 如果您觉得此文章差,就请您
      0%(0)

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .