• C++奇奇怪怪的题目之构造析构顺序 - 高策 (gaocegege.com)

    • 构建: 父类先创建,接着子类
    • 析构: 子类先被释放,最后父类 。注意 析构函数 是 Stack 被回收时才被执行(或者主动 delete)
  • C++奇奇怪怪的题目之析构函数虚函数化 - 高策 (gaocegege.com)

    • Constructor 不能为虚函数
    • Deconstructor 可以是虚函数 (特别是表示多态时应该如此), 否则可能只会调用基类的 Deconstructor , 但实例却是子类
    • 术语警告: 有些人会称 “Virtual Table” 的函数地址\入口映射 为 “动态绑定” 。
    • 虚函数: 在派生类重新定义基类中定义的虚函数时,会告诉编译器不要静态链接到该函数
    • 纯虚函数 : 在基类中又不能对虚函数给出有意义的实现。显然,纯虚函数的基类没有实例
      • 含纯虚数的类 = Java 的抽象类。让其他类可以继承的适当的基类。
      • 抽象类的子类 = 具体类
  • C++奇奇怪怪的题目之父类子类函数重载隐藏 - 高策 (gaocegege.com)

  • 父类与子类相同的函数名 (即使实现了 overloading重载, 即签名不同), 子类也不能直接调用父类
  • 除非使用了 作用域。

  • 三大函数:拷贝构造,拷贝赋值,析构函数_SUSU0203的博客-CSDN博客

    • 如果要写 Deconsturctor
    • 就要最好定义 Copy Constructor, Copy assignment operator (即等号的重载行为)
  • 继承的 Public, Protected, Private

  • 继承特例

    • 一个派生类继承了所有的基类方法,但下列情况除外:
      • 基类的构造函数、析构函数和拷贝构造函数。
      • 基类的重载运算符。
      • 基类的友元函数。
  • 虚继承

    • 一般用在棱形继承 C++ 继承 - 菜鸟教程 (runoob.com)

    • class D{......};
      class B: public D{......};
      class A: public D{......};
      class C: public B, public A{.....};
      
    • class D{......};
      class B: virtual public D{......};
      class A: virtual public D{......};
      class C: public B, public A{.....};
      
  • 动态内存

    • new 不止是分配内存,而且会调用类的构造函数,同理delete会调用类的析构函数
    • malloc则只分配内存,不会进行初始化类成员的工作,同样free也不会调用析构函数
    • 还有指针的类型 (malloc 返回的指针需要 casting)
  • 命名空间

    • Java 的 Package ?
    • 但是 namespace 可以嵌套,而且 namespace 很宽松