成员函数的一种
①名字与类名相同,可以有参数,不能有返回值(void也不行)
②作用是对对象进行初始化,如给成员变量赋值。
③如果定义类时没写构造函数,则编译器生成一个默认的无参数的构造函数。
默认构造函数为参数,不做任何操作。
如果定义了构造函数,则编译器不生成默认的无参数的构造函数。
对象生成时构造函数自动被调用。对象一旦生成,就再也不能在其上执行构造函数
一个类可以有多个构造函数。参数个数和参数类型不同
复制构造函数
只有一个参数,即对同类对象的引用。
形如X::X( X & ) 或 X::X( X & )
如果没有定义复制构造函数,那么编译器生成默认的复制构造函数。
默认的复制构造函数完成复制功能。
复制构造函数起作用的三种情况
①当用一个对象去初始化同类的另一个对象时。
②如果某个函数有一个参数是类的对象,那么该函数别调用时,
类的复制构造函数将被调用。
③如果一个函数的返回值是类的对象时,则函数返回时,类的复制构造函数被调用。
注意 对象间赋值并不导致复制构造函数被调用。
void fun( CMyclass obj )
{
cout << "fun" << endl;
}
这样的函数,调用时生成形参会引发复制构造函数调用,开销比较大。
所以希望考虑使用CMyclass & 引用类型作为参数。
加上const 关键字,确保实参的值不被改变。
类型转换构造函数
目的:实现类型的自动转换。