Categories:
C++奇奇怪怪的题目
-
C++奇奇怪怪的题目之构造析构顺序 - 高策 (gaocegege.com)
- 构建: 父类先创建,接着子类
- 析构: 子类先被释放,最后父类 。注意 析构函数 是 Stack 被回收时才被执行(或者主动 delete)
-
C++奇奇怪怪的题目之析构函数虚函数化 - 高策 (gaocegege.com)
- Constructor 不能为虚函数
- Deconstructor 可以是虚函数 (特别是表示多态时应该如此), 否则可能只会调用基类的 Deconstructor , 但实例却是子类。
- 术语警告: 有些人会称 “Virtual Table” 的函数地址\入口映射 为 “动态绑定” 。
- 虚函数: 在派生类中重新定义基类中定义的虚函数时,会告诉编译器不要静态链接到该函数
- 纯虚函数 : 在基类中又不能对虚函数给出有意义的实现。显然,纯虚函数的基类没有实例
- 含纯虚数的类 = Java 的抽象类。让其他类可以继承的适当的基类。
- 抽象类的子类 = 具体类。
- 父类与子类相同的函数名 (即使实现了 overloading重载, 即签名不同), 子类也不能直接调用父类
-
除非使用了 作用域。
-
三大函数:拷贝构造,拷贝赋值,析构函数_SUSU0203的博客-CSDN博客
- 如果要写 Deconsturctor
- 就要最好定义 Copy Constructor, Copy assignment operator (即等号的重载行为)
-
继承的 Public, Protected, Private
- C++ 类访问修饰符 - 菜鸟教程 (runoob.com)
- 但上面有写地方说不清楚, 比如
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 很宽松