构造函数
构造函数:是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,在对象的生命周期内只且只调用一次,以保证每个数据成员都有一个合适的初始值。
构造函数的特性:
1、函数名与类名相同;
2、不具有任何类型,没有返回值;
3、有初始化列表(可以不用):每个数据成员在初始化列表中只能出现一次;初始化列表仅用于初始化数据成员,并不指定数据成员的初始化顺序;数据成员在类中的定义 顺序就是参数列表的初始化顺序。
4、新对象被创建,由编译器自动调用,且在对象的生命周期内仅调用一次;
5、构造函数可以重载,实参决定了调用哪个构造函数;
6、如果没有显示定义构造函数时,编译器会提供一个默认的构造函数;只是这个构造函数的函数体是空的,也没有参数,不执行初始化操作;
7、无参构造函数和带有缺省值的构造函数都认为是缺省构造函数,并且缺省构造函数只能有一个;
8、构造函数不能用const来修饰。
类中包含以下成员必须要放在初始化列表中:
1、引用数据成员
2、const数据成员
3、类类型成员
程序示例:
构造函数的作用:
1、构建对象:类名 对象名(实参一,实参二···) Date d1(2015,1,1)
2、初始化对象
3、类型转换:explicit关键字,用explicit修饰构造函数,抑制由构造函数定义的隐式转换。
拷贝构造函数
拷贝构造函数:是构造函数的重载,只有单个形参且该形参是同类型已存在对象的引用,常用const修饰,由编译器自动调用。
使用场景:
1、对象实例化对象
2、传值方式作为函数的参数
3、传值方式作为函数返回值
析构函数
析构函数:与构造函数功能相反,在对象被销毁时,由编译器自动调用,完成类的资源清理。
析构函数特性:1、析构函数在类名前加上字符~
2、析构函数无参无返回值
3、一个类有且只有一个析构函数,若未显示定义,系统会自动生成缺省的析构函数
4、对象生命周期结束时,C++编译系统自动调用析构函数
5、析构函数体内并不是删除对象,而是做一些清理工作。