-
两类典型的class
- 含有指针成员
- 不含指针成员
- 指针成员会对class的操作造成一些本质性的影响,主要源于资源的生命期管理
-
拷贝构造
- 默认拷贝构造的问题,进行了浅拷贝,这会造成困扰,原有的成员泄露出去了,新成员被多个实例引用
- 进行深拷贝就好了,自己写拷贝构造函数
-
赋值运算符同上
- 另外要注意自身赋值的问题,防止造成内容丢失
-
三个重要成员函数
- 拷贝构造
- 赋值运算符
- 析构函数
-
含有指针成员的class必须有拷贝构造函数和赋值运算符,除非禁用
-
堆和栈
-
堆栈的概念是和生命期直接相关的,栈上的对象生命期由函数调用来管理,堆上对象的生命期由程序员手工管理,其实这是很好理解的,因为栈区是连续的,重置栈底自然就销毁了对象
-
堆区对象是完全通过引用被外界持有的,所以需要手动控制生命期
-
静态成员(类成员)的生命期持续到程序结束,用于共享属性,单例等情况
-
new和malloc的区别,malloc分配出来的是原始内存(void*),new出来的是初始化过的对象
-
-
静态变量和静态方法
- 静态变量和静态方法是被所有类成员所共享的
- 静态方法只能访问静态成员函数
- 静态成员必须初始化后才能使用
- 静态函数可以直接通过类名调用,也可以通过实例调用
网友评论