续命名空间:

  当我们向函数传递一个类时,我们除了查找常规作用域还查找了类所属的作用域  

  如果一个函数被声明为友元(即使它还未被声明)那我们认为他是最近的外层空间的成员。

多重继承与虚继承:

  构造函数的继承 

  

class Pi:Base{
  using Base::Base;  
}

  编译器将会生成Pi(...)的构造函数,...与Base构造函数的相同。

  派生类的析构函数只需处理自己的对象,基类会自动交由基类的析构函数处理。

  虚析构函数的意义在于能够,在动态绑定的情况根据动态类型进行确切的析构函数。

  ”基类树“中是允许同名的成员的,但在直接调用的时候就会产生二义性,应该通过访问符取特定的版本。(访问符是可以跳级的)

  编译器不会判断派生类向基类转换的好坏,在函数调用时就会产生二义性。

  static_cast返回的是右值  最近才发现(

  

 虚继承:

   之前一直在纠结“共享基类”是什么意思,以为也是会重复定义。

   其实我们定义的是某个派生类,在这个派生类创建时,创建出一份实例,让他们一起共享。

   普通继承关系中,派生类只能初始化直接基类。

      虚继承关系中,允许派生类初始化虚基类。

    虚继承关系中最底层(最儿子)的派生类的构造函数进行如下过程:
      构造虚基类

      构造直接基类

   我们的直接基类的构造函数中可能也会存在构造虚基类的步骤,但是如果它不是在对底层,该语句将无法产生任何效果!!

   一个派生类允许有多个虚基类


  到此 18章完

续

 

 

  

  

上一篇:细化 Flutter List 内存回收,解决大 Cell 问题


下一篇:浪漫的turtle,送给程序员自己的圣诞树