//条款32:确定你的public继承塑模出is-a关系
// 1.public继承意味着is-a的关系,适用在基类上的方法都能用于派生类上。 //条款33:避免遮掩继承而来的名称
// 1.在public继承体系中,派生类和基类的关系是is-a的关系,所以派生类中不应该隐藏基类的非虚函数。
// 2.为了在派生类中重载基类的非虚函数,可以使用using声明式,或者在派生类的函数中显示调用基类的非虚函数。 //条款34:区分接口继承和实现继承
// 1.接口继承与实现继承不同。在public继承体系下,派生类总是继承基类的接口。
// 2.纯虚函数只具体指定接口继承。
// 3.一般的虚函数具体指定接口继承和缺省实现继承。
// 4.非虚函数具体指定接口继承以及强制性实现继承。(由条款33可知,在public继承中,不要在派生类中隐藏基类的非虚函数) //条款38:通过复合塑模出has-a或根据某物实现出 //条款39:明智而慎用地使用private继承
// 1.当面对并不存在is-a的关系的两个类的时候,其中一个类需要访问另一个类的protected成员,或者需要重新定义虚函数的时候,private继承极可能成为正统的设计策略。
// 2.对于一个空的类,编译器一般会将一个char插入其内存中。当一个类私有继承一个空类的时候,此类又有别的数据成员的时候,空类的char并不会占用派生类的空间。

Effective C++ 6.继承与面向对象设计的更多相关文章

  1. Effective C++(20) 继承与面向对象设计

    本文主要参考<Effective C++ 3rd>中的第六章部分章节的内容. 关注的问题集中在继承.派生.virtual函数等.如: virtual? non-virtual? pure ...

  2. Effective C++: 06继承与面向对象设计

    32:确定你的public继承塑模出is-a关系 以C++进行面向对象编程,最重要的一个规则是:public继承表示的是"is-a"(是一种)的关系. 如果令class D以pub ...

  3. 【Effective C++】继承与面向对象设计

    关于OOP 1,继承可以是单一继承或多重继承,每一个继承连接可以是public.protected或private,也可以是virtual或non-virtual. 2,成员函数的各个选项:virtu ...

  4. EffectiveC++ 第6章 继承与面向对象设计

    我根据自己的理解,对原文的精华部分进行了提炼,并在一些难以理解的地方加上了自己的"可能比较准确"的「翻译」. Chapter 6 继承与面向对象设计 Inheritance and ...

  5. Effective C++ —— 继承与面向对象设计(六)

    条款32 : 确定你的public继承塑模出is-a关系 以C++进行面向对象编程,最重要的一个规则是:public inheritance(公开继承)意味“is-a”(是一种)的关系.请务必牢记.当 ...

  6. Effective C++ -- 继承和面向对象设计

    32.确保你的public继承了模is-a关系 public继承意味着is-a关系(里氏替换原则),一切适用于基类也适用于派生类. 矩形继承正方形问题: 可实施与矩形的操作无法实施与正方形 在编程领域 ...

  7. Effective C++ ——继承与面向对象设计

    条款32:确定你的public继承塑模出is-a关系 以public继承的类,其父类的所有的性质都应该使用与子类,任何需要父类的地方都应该能用子类来代替,任何子类类型的对象也同时是父类的: class ...

  8. Effective C++笔记:继承与面向对象设计

    关于OOP 博客地址:http://www.cnblogs.com/ronny 转载请注明出处! 1,继承可以是单一继承或多重继承,每一个继承连接可以是public.protected或private ...

  9. Effective C++笔记(六):继承与面向对象设计

    参考:http://www.cnblogs.com/ronny/p/3756494.html 条款32:确定你的public继承塑模出is-a关系 “public继承”意味着is-a.适用于base ...

随机推荐

  1. iMx280A测试声纹

    1.首先要有声纹识别的动态库,且arm-linux-gcc的版本相同.可以在虚拟机用file 命令来看文件的基本信息,通过file指令,我们得以辨 识该文件的类型. 2.用tftp将库传到开发板的li ...

  2. JS Questions:Front-end Developer Interview Questions

    Explain event delegation Event delegation allows us to attach a single event listener, to a parent e ...

  3. by maintaining a log containing a record of each transaction’s activities - The Commit/Rollback Protocol

    Computer Science An Overview _J. Glenn Brookshear _11th Edition Before a transaction is allowed to a ...

  4. java Direct Buffer

    public static ByteBuffer allocate (int capacity)       //性能低于下面的Direct,因为是把内存建立在JVM堆上,容易被GC回收,可能需要多次 ...

  5. JAVA Exchanger

    //Exchanger工具类的使用案例 //本文给出一个简单的例子,实现两个线程之间交换数据,用Exchanger来做非常简单. import java.util.concurrent.Exchang ...

  6. iOS开发之Objective-c的MD5/SHA1加密算法的实现

    Objective-c实现MD5和SHA1算法相对还是比较简单的,可以直接调用系统的C/C++共享库来实现调用 MD5即Message Digest Algorithm 5(信息-摘要算法 5),用于 ...

  7. Mac终端命令行提示符格式更改方法

    内容提要: 主要是通过~/.bash_profile文件更改环境变量PS1,修改命令行提示符的显示格式,并展示不同颜色. 本文介绍了默认设置的缺陷,以及需要用到的基础知识,最后介绍了更改命令行提示符格 ...

  8. Java学习-017-EXCEL 文件读取实例源代码

    众所周知,EXCEL 也是软件测试开发过程中,常用的数据文件导入导出时的类型文件之一,此文主要讲述如何通过 EXCEL 文件中 Sheet 的索引(index)或者 Sheet 名称获取文件中对应 S ...

  9. 与Perl兼容的正则表达式函数

    <?php $str = "abc_ABC_123abc"; $patt = '/^abc(.*?)abc$/'; //有一个模式单元就会多一个存储 $arr = null; ...

  10. String的类型的数据

    字符串类型的数据也是计算机基础. var box = "lc"; var box1 = 'lc1'; //不管是单引号还双引号,都必须成对出现 1.ECMAscript规定字符串是 ...