构造函数
构造函数的功能是,在创建对象时使用给定的值将对象初始化
特点:
1、构造函数时成员函数,函数体可放在类体内或类体外;
2、构造函数是一个特殊的函数,该函数的名字和类名相同,且不指定类型说明,它有隐含的返回值,该值由系统内部使用,可以有一个或多个参数;
3、构造函数可以重载,即可以定义多个参数不同的函数;
4、程序中不能直接调用构造函数,在创建对象时系统自动调用构造函数。
不带任何参数的构造函数韦默认构造函数。如果一个类中没有定义任何构造函数,则编译系统会自动生成一个不带参数的默认构造函数。
拷贝初始化构造函数
特点:
1、函数名同类名,因为它也是一种构造函数,并且该函数也不指定返回类型;
2、函数只有一个参数,是对某个对象的引用
3、每个类都必须由一个拷贝初始化构造函数,通常在参数前加const。
需要拷贝初始化构造函数用一个对象初始化另一个对象的情况如下:
1、明确表示由一个对象初始化另一个对象时;
2、当对象作为函数实参传递给形参时;
3、当对象作为函数返回值。
析构函数
析构函数的功能是用来释放一个对象。与构造函数正好相反。
构造函数和析构函数都没有返回值;
构造函数可以带参数也可以重载,析构函数不能带参数,也不能重载;
特点:
1、析构函数是成员函数,函数体可以放在类体内或类体外;
2、析构函数的名字同类名,前面加~,析构函数不指定数据类型,也没有参数;
3、一个类中最多只有一个析构函数;
4、析构函数可以被调用,也可以由系统调用。
自动调用:
1、如果一个对象被定义子啊一个函数体内,则当这个函数结束时,该对象的析构函数被自动调用;
2、使用new运算符动态创建一个对象后,使用delete运算符释放它时,delete会自动调用析构函数。
如果类中没有定义析构函数,则编译系统会自动生成一个默认的析构函数。
调用析构函数的顺序和构造函数的正好相反!