6:29:32 构造函数的必要性与特殊性(续) 类中未显式提供构造函数时,C++会自动添加一个默认构造 函数,该构造函数不带有形参,且函数体为空,在后台起作用; 若类中显式提供了构造函数,则不再添加默认构造函数 使用默认构造函数的情况下,若创建的对象是全局对象或 静态对象,则成员变量的值全部被置为相应类型的0值,否 则成员变量的值不确定 应尽可能提供自己的构造函数,而不使用默认的构造函数
16:29:32 构造函数的必要性与特殊性(续) –类中未显式提供构造函数时,C++会自动添加一个默认构造 函数,该构造函数不带有形参,且函数体为空,在后台起作用; 若类中显式提供了构造函数,则不再添加默认构造函数 –使用默认构造函数的情况下,若创建的对象是全局对象或 静态对象,则成员变量的值全部被置为相应类型的0值,否 则成员变量的值不确定 –应尽可能提供自己的构造函数,而不使用默认的构造函数
§2拷贝构造函数(copy- constructor) 6:29:3 种特殊的构造函数 创建对象时,用一个已经存在的对象对新创建的同类对象 进行初始化,此时要求构造函数的参数为自身类类型的引 用,这种构造函数称为拷贝构造函数 拷贝构造函数的一般形式为 类名∷类名( cons t类名&引用名,) 般情况下,多使用如下形式 类名:类名( cons t类名&引用名); 其中 cons t是可选的 例:拷贝构造函数 class a public A(int)Icout < AO<< endl; A(const A&)(cout <<"A(A&, int)"<< end1; void maino a a(1): a b(a); Ac=b: 1
16:29:32 §2 拷贝构造函数(copy-constructor) –一种特殊的构造函数 –创建对象时,用一个已经存在的对象对新创建的同类对象 进行初始化,此时要求构造函数的参数为自身类类型的引 用,这种构造函数称为拷贝构造函数 –拷贝构造函数的一般形式为 类名::类名(const 类名& 引用名,…); 一般情况下,多使用如下形式 类名::类名(const 类名& 引用名); 其中const是可选的 例:拷贝构造函数 class A{ public: A(int){cout << "A()" << endl;} A(const A&){cout << "A(A&,int)" << endl;} }; void main(){A a(1);A b(a);A c=b;}