无参构造
每个类,最好都要有 “无参构造”!
因为很多容器的 “默认初始化” 在填补元素时,使用的 “无参构造”
无参构造2
ST t(); 这种写法是错的, ST * t = new ST(); 这虽然是对的。
在调用“无参构造”时,最好要写成: ST t; 和 ST * t = new ST;
构造函数的 初始化列表
class SON : FA{
Obj1 * o1;
Obj2 * o2;
SON() :
FA(),
o1( new Obj1 ),
o2( new Obj2 )
{}
注意这里的顺序,很重要!!! 必须是:FA -> o1 -> o2 的顺序!!!
- 1,先是 “父类”的初始化
- 2,然后 “成员变量”的初始化,而且,必须按照“你类的 定义顺序”!!
这里也可以知道,你类的成员定义的顺序,就是初始化的顺序
引入头文件
当前文件,需要引用:#include "A.h" 这个头文件,那就在 “当前文件” 引入(不管当前文件 是h、还是cpp)
比如:
B.cpp:
#include "B.h"
...
此时,就把#include "A.h" ,放到当前B.cpp 里!!! 不要放到B.h 里!!!
道理很简单。因为只有 当前B.cpp 有这个需求!!
二重指针
int * p ,p 是 指向 int 的指针。 int * * p ,p 是 指向 int * 的指针。
需求: 让ptr动态申请N * M 的数组
int * * ptr;
ptr = new int * [N];
FOR(i, 0, N-1, 1) ptr[i] = new int[M];
ptr {比如,N=2, M=5}:
0 1 2 3 4
5 6 7 8 9
这10个元素,并不是连续的内存!!! 但{0-4}是连续的,{5-9}是连续的。
|