C++面向对象 Week2——Boolan

一、类可以分为带指针的与不带指针的两种形式,上周已经回顾不带指针的类的写法。

对于带指针的类,除了考虑其一般的构造函数的写法,还要考虑三个主要问题,即通常所说的Big Three:

1.拷贝构造函数

这种构造函数属于深拷贝,需要开辟空间存拷贝过来的数据。

2.拷贝赋值(即赋值操作符)

在拷贝赋值中,除了要开辟空间存储数据之外,首先要检查是否为自我赋值。

如果是自我赋值,则直接返回;如果不是自我赋值,则进行拷贝操作。

3.析构函数

析构函数中要把申请的资源(指针等)清理干净。


二、stack(栈) 与 heap(堆) 的区别

stack归作用域所有

stack object/ auto object 离开作用域则生命结束

heap归全局所有

static local object, global object 在作用域结束后仍存在,其生命直到整个程序结束时才结束。


三、new 与 delete

new:先分配memory,再调用ctor;

delete:先调用dtor,在释放memory。

array new 要搭配 array delete使用。


四、static

static data 在内存中有专门区域存放,在类之外必须要有定义。

static function 没有this指针,只能用于处理static data。


五、template

class template 使得class在设计时数据类型不被写死,在使用时根据具体情况确定数据类型;

function template 作用类似,编译器在编译时可以自动判断函数参数类型。


六、namespace

namespace相当于对名称进行了一个包装,防止名称有所冲突。

在一个namespace中声明的名称在使用时必须打开该“包装”。

你可能感兴趣的:(C++面向对象 Week2——Boolan)