日期: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 分)
查看完整评论