1.构造函数:(主要任务是初始化对象),类似Init()函数的功能
特征:3为实质
2.析构函数:(主要任务是清理空间,否则空间泄露),类似destory()函数的功能
默认构造函数(编辑器默认生成的,无参构造函数,全缺省构造函数):不传参就可以调用的函数。
自定义类型要使用默认构造函数,内置类型无所谓
3:拷贝构造函数(构造函数的一个子分类):用同类型的对象拷贝初始化
拷贝构造函数的要求:
自定义类型传值传参要调用拷贝构造
如果不使用&会发生无穷递归。所以拷贝构造的参数必须引用
Date d1(d2) 等价于 Date d1=d2
浅拷贝:按字节一个一个拷贝
深拷贝:开一样大小的空间,拷贝一样的值
当不写拷贝构造时,栈这类的会出现问题(浅拷贝/值拷贝)(主要原因:析构两次(指向了同一空间))
解决方案:采用深拷贝
但是要注意这里的MyQueue中的自定义类型为栈,还是要写栈的拷贝构造
5月16日
运算符重载:
注意事项:
.*出现的情况
将私有变成全局的方法:重载成成员函数
变成成员变量,这里有一个默认的this,要进行修改,现在类里面找,再到全局里面找
赋值拷贝/赋值重载:把一个已经存在的对象,拷贝给另一个已经存在的对象
引用返回:会出现野引用/野指针的情况,可以使用传值返回解决(如果时静态static可以使用引用返回),主要就看会不会产生析构,会就传值,不会就引用,(拷贝会牺牲性能)
两种能够正确返回的方法: