virtual函数:接口必须被继承。
non-virtual:接口和实现都被继承。
public继承情况:Liskov Substitution Principle
Base能用的地方都能用Derived代替。
如函数参数用point或reference传递对象。
public继承的关键:is-a模型。
derived-class的名称会遮掩Base-class的名称。
例:
如果要求Baseclass的mf1不被遮蔽,解决办法:
1.在类public中声明using Base::mf1;
如果private继承,指向继承Base class的1个mf1,则可以利用转交函数
virtual void mf1()
{
Base::mf1();
}
pure virtual function在base中声明,必须在derived中定义,即必须提供自己的版本,否则报错。
pure virtual目的是继承接口。
注意pure virtual也可以给出定义。可以实现即覆写又利用转换函数实现继承。
impure virtual的目的是继承接口和缺省实现,如果不定义默认继承,但derived可以覆写它。
80-20规则可以确定 我们一定要关注20%的代码,因为他们用了80%的时间。
non-virtual 继承接口和强制实现。
1.template method设计模式:
public non-virtual成员函数调用private virtual函数 称为 non-virtual interface (NVI)
non-virtual函数称为外覆器
优点:可以额外做事先和事后工作。
derived class可以重新定义继承private virtual函数。
2.function pointer实现strategy模式
构造函数参数接受一个指针。
3.tr1::function实现strategy模式
如:typedef std::tr1::function<int (const A&)> h;//h为任何可调用物。
//签名代表的函数是接受一个reference指向const A 返回int
//该设计可兼容。
只要h的参数是可以转换为const&A的,返回值能转换为int的像函数的都行。
4.传统strategy模式
将本生的virtual函数变为一个类。
任何派生类都不该重新定义基类的non-virtual函数
virtual为动态绑定,默认参数值为静态绑定。
分享到:
相关推荐
《Effective C++》和《More Effective C++》是两本非常经典的C++编程指南,由Scott Meyers撰写,旨在帮助开发者提升C++编程技巧和理解深度。这两本书中包含了一系列的编程实践和建议,旨在让程序员写出更高效、更...
《Effective C++》和《More Effective C++》是C++编程领域中的两部经典之作,由Scott Meyers撰写。这两本书深入浅出地探讨了如何更有效地利用C++语言特性,提升代码质量和效率,是每一位C++程序员必备的参考书籍。 ...
effective c++ & more effective c++ 纯文字版
《Effective C++》和《More Effective C++》是两本由Scott Meyers撰写的经典C++编程指南,深受程序员喜爱。这两本书深入探讨了C++编程的最佳实践和常见陷阱,帮助开发者写出更高效、更安全的代码。以下是对这两本书...
有人把学习C++的分为两类:看过Effective和没看过Effective的. 6寸 重排版
这是我辛苦找来的侯捷翻译的Effective C++ && More Effective C++(完整版),其中Effective C++ 包括中文第二版,中文第三版,还有英文第三版。我这还有pdf,但是大于15MB,传不上去,有需要的,可以像我要啊!
Effective C++ & More Effective C++.chm
《Effective C++》第三版由Scott Meyers所著,是一本经典的C++编程书籍。本书不仅深入探讨了C++语言的高级特性,也提出了一系列编程实践中的最佳实践和技巧。侯捷老师翻译的中文版,使更多的中文读者能够学习和掌握...
《Effective C++中文第3版》是一本由Scott Meyers所著的经典著作,该书深入浅出地介绍了C++编程语言的最佳实践与设计原则。它不仅适合初学者掌握C++的核心概念,也是资深程序员提高代码质量和性能的宝典。下面,我们...
More Effective C++ 侯捷 pdf
6. **构造函数和析构函数**:有效的构造函数和析构函数设计对于C++对象的正确初始化和清理至关重要。书中将讨论构造函数的初始化列表、拷贝构造函数、移动构造函数,以及如何实现无害的析构函数。 7. **常量和引用*...
根据提供的标题、描述和标签,我们可以确定这与《Effective C++》这本书的相关资源有关。但是,在给定的部分内容中,并没有直接提及与本书的具体知识点,而是反复提到了一个名为“Linux公社”的网站及其涵盖的内容...
《Effective C++》和《More Effective C++》是两本由Scott Meyers撰写的经典C++编程指南,深受程序员喜爱。这些书籍深入探讨了如何利用C++语言的特性来编写更高效、更易于理解和维护的代码。以下是这两本书中涵盖的...
《Effective C++》是一本由Scott Meyers编著的经典C++编程指南,旨在帮助程序员写出更高效、更安全、更易于理解和维护的C++代码。这本书分为三个版本,分别是第一版、第二版和第三版,其中第一版和第二版提供了中文...
6. 现代C++的最新特性:由于书中提到了第三版中增加了关于最新语言特性和问题的章节,可以推断书中还包含了C++11(及以上版本)的新特性的介绍和最佳用法。 7. 代码效率和性能优化:包括如何在不牺牲代码可读性和可...
《More Effective C++》与《Effective C++》是两本非常经典的C++编程指南,由Scott Meyers撰写,对于深入理解和提升C++编程技巧有着极大的帮助。这两本书都是C++程序员的必读之作,旨在帮助读者更好地掌握C++语言的...
《Effective C++中文版(第三版)》是一本深入探讨C++编程实践的书籍,该书由Scott Meyers撰写,是C++编程领域内的经典之作。书中通过条目式讲解,简洁明了地介绍了55个改善C++程序和设计的具体方法。这些方法不仅...
《Effective C++》和《More Effective C++》是两本由Scott Meyers撰写的经典C++编程指南,深受程序员喜爱。这两本书深入探讨了如何利用C++语言的特性来编写高效、可维护的代码,是提升C++编程技能的重要参考资料。 ...
6. 新特性:根据版本的不同,中文版《Effective C++》可能还包含了对C++新标准(如C++11、C++14、C++17和C++20)中新增特性的介绍,包括了lambda表达式、智能指针、右值引用、移动语义和并发编程等。 7. 编码风格与...