文章 2017-03-29 来自:开发者社区

读书笔记 effective C++ Item 40 明智而谨慎的使用多继承

1. 多继承的两个阵营 当我们谈论到多继承(MI)的时候,C++委员会被分为两个基本阵营。一个阵营相信如果单继承是好的C++性质,那么多继承肯定会更好。另外一个阵营则争辩道单继承诚然是好的,但多继承太麻烦,而不值得去使用它。在这个条款中,我的主要目标是让你明白多继承的这两个观点。 2. 从多个基类中继承的名字不能相同 第一件事情是你需要认识到使用MI进行设计时,从多个基类中可能会继承相同的名字(....

文章 2017-03-25 来自:开发者社区

读书笔记 effective c++ Item 37 永远不要重新定义继承而来的函数默认参数值

  从一开始就让我们简化这次的讨论。你有两类你能够继承的函数:虚函数和非虚函数。然而,重新定义一个非虚函数总是错误的(Item 36),所以我们可以安全的把这个条款的讨论限定在继承带默认参数值的虚函数上。 1. 虚函数是动态绑定的,而默认参数是静态绑定的 在这种情况下,这个条款的验证就相当直接了:虚函数是动态绑定的,而默认参数值是静态绑定的。 这是什么?你说你不堪重负的脑袋已经忘记了动态...

文章 2017-03-24 来自:开发者社区

读书笔记 effective c++ Item 36 永远不要重新定义继承而来的非虚函数

  1. 为什么不要重新定义继承而来的非虚函数——实际论证 假设我告诉你一个类D public继承类B,在类B中定义了一个public成员函数mf。Mf的参数和返回类型并不重要,所以假设它们都是void。实现如下: 1 class B { 2 public: 3 void mf(); 4 ... 5 }; 6 lass D: public B { ... } 我们不需要了解B,D或者mf...

文章 2017-03-20 来自:开发者社区

读书笔记 effective c++ Item 34 区分接口继承和实现继承

  看上去最为简单的(public)继承的概念由两个单独部分组成:函数接口的继承和函数模板继承。这两种继承之间的区别同本书介绍部分讨论的函数声明和函数定义之间的区别完全对应。 1. 类函数的三种实现 作为一个类设计者,有时候你只想派生类继承成员函数的接口(声明)。有时候你想让派生类同时继承接口和实现,但是你允许它们覆盖掉继承而来的函数实现。但有时候你却想让派生类继承一个函数的接口和实现并...

文章 2017-03-15 来自:开发者社区

读书笔记 effective C++ Item 33 避免隐藏继承而来的名字

  1. 普通作用域中的隐藏 名字实际上和继承没有关系。有关系的是作用域。我们都知道像下面的代码: 1 int x; // global variable 2 3 void someFunc() 4 { 5 double x; // local variable 6 7 std::cin >> x; // ...

文章 2017-03-14 来自:开发者社区

读书笔记 effective c++ Item 32 确保public继承建立“is-a”模型

  1. 何为public继承的”is-a”关系 在C++面向对象准则中最重要的准则是:public继承意味着“is-a”。记住这个准则。 如果你实现一个类D(derived)public继承自类B(base),你在告诉c++编译器(也在告诉代码阅读者),每个类型D的对象也是一个类型B的对象,反过来说是不对的。你正在诉说B比D表示了一个更为一般的概念,而D比B表现了一个更为特殊的概念。你...

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

开发与运维

集结各类场景实战经验,助你开发运维畅行无忧

+关注