C++的复习其实前几天就开始了。这里先记录一下前面看过的一部分内容,后续继续补充,每天更新。复习主要通过nowcode,表示感谢。
1.string后面的 ‘\0’, 在复制字符串的时候一定要注意。
2.写一个strcpy。注意事项:
a.源数组不能改动,需要加const。
b.源地址和目的地址加非空断言。
c.返回值应为目的地址。
3.传入函数的参数应该是地址,二级指针!
4.malloc后面应该跟着对于是否真正分配成功的检查以及free(p),同时最好将p = NULL,防止野指针。
5.指针未初始定义是不能使用的。
6.写宏的话,一定要把括号完全打好
7.结构体的对齐规则:
a.每个成员的起始偏移量必须为其大小的整数倍。
b.总的偏移量必须是最大的成员的大小的整数倍。
8.类的构造函数,析构函数, 赋值函数,拷贝构造函数
构造函数接受外面传进来的参数,并将其经过处理检查后赋值给类内部的private里的变量。当然,传进来的参数应该为const
析构函数一般是delete内部的参数,不接受参数
拷贝构造函数:当类内部有指针类成员变量时,一定要有拷贝构造函数。在C++中,下面三种对象需要调用拷贝构造函数:
1.对象以值传递的方式传入函数参数。
2.对象以值传递的方式从函数返回。
3.对象需要通过另一个对象初始化。
拷贝构造函数接受的参数应该是另一个相同的类other,且必须为const
赋值函数:
判断自引用,即this == other时应该返回原指针。
释放原有的内存资源
在最后一定是return *this
9.static 与 const关键字
static有以下几个作用:
1.全局静态变量:static + 全局变量
未经初始化的话会被自动初始化为0,位于静态存储区。作用域仅限于定义它的文件中。
2.局部静态变量:static + 局部变量
作用域仍为局部作用域,但离开作用域后不会销毁,也无法访问,直到该函数再次被调用,且值不变。
3.静态函数:static + 函数定义
该函数只在声明它的cpp文件中可见,不会与其他cpp文件中的同名函数冲突。不要在头文件中声明static, 不要在cpp中声明非static。如果需要复用某函数,将其放在头文件。
4.类的静态成员 & 类的静态函数
静态成员可以成为类中多个对象的数据共享,而不是某一个对象的成员。对多个对象来说,静态成员只储存一处,供所有对象使用。
在静态成员函数的实现中不能直接引用类中说明的非静态成员,可以引用静态成员。如果要引用非静态成员,可以通过对象来引用。