§8.3拷贝构造函数 ◆默认构造函数的作用 为了让所定义的类能够被使用(有时甚至 没有给对象任何初始化信息) ◆当所定义的类没有提供任何构造函数时,系 统将为类自动生成一个默认构造函数
§8.3 拷贝构造函数 默认构造函数的作用 为了让所定义的类能够被使用(有时甚至 没有给对象任何初始化信息) 当所定义的类没有提供任何构造函数时,系 统将为类自动生成一个默认构造函数
§8.3拷贝构造函数 只要定义了一个构造函数,系统将不再生成默认构造函数 例: class a A(int 1) 如下定义类A的对象: A aa A array[10] A *pa=new A 般情况下,都要定义自己的构造函数,并至少定义 个默认构造函数
§8.3 拷贝构造函数 只要定义了一个构造函数,系统将不再生成默认构造函数 例:class A { A(int i); …… }; 如下定义类A的对象: A aa; A array[10]; A *pa=new A; 一般情况下,都要定义自己的构造函数,并至少定义一 个默认构造函数
§8.3拷贝构造函数 拷贝构造函数的作用 ◆用一个对象去构造另一个同类的对象 例: STUDENT S1(“Jeny);//系统调用构造函数 STUDENT S2=s1;//系统调用拷贝构造函数,用对 象s1的值去初始化对象s2 ◆对象作为函数参数 ◆对象作为函数返回值
§8.3 拷贝构造函数 拷贝构造函数的作用 用一个对象去构造另一个同类的对象 例: STUDENT s1(“Jenny”); //系统调用构造函数 STUDENT s2=s1; //系统调用拷贝构造函数,用对 象s1的值去初始化对象s2 对象作为函数参数 对象作为函数返回值
§8.3拷贝构造函数 ◆拷贝构造函数的形式( STUDENT类) STUDENT(const STUDENT& obj); 用ob初始化 个新对象
§8.3 拷贝构造函数 拷贝构造函数的形式(STUDENT类) STUDENT(const STUDENT& obj); { …… } 用obj初始化 一个新对象
§8.3拷贝构造函数 拷贝构造函数的说明: l)拷贝构造函数只有一个参数,用同一类的对象作参数 (2)参数传递方式必须按引用调用函数 (3)每个类都必须有一个拷贝构造函数,如果没定义,系 统自动生成一个缺省的拷贝构造函数 缺省拷贝构造函数的含义: 用一个已知对象的数据成员的值拷贝给正在创建的 另一个同类的对象
§8.3 拷贝构造函数 拷贝构造函数的说明: ⑴ 拷贝构造函数只有一个参数,用同一类的对象作参数 ⑵ 参数传递方式必须按引用调用函数 ⑶ 每个类都必须有一个拷贝构造函数,如果没定义,系 统自动生成一个缺省的拷贝构造函数 缺省拷贝构造函数的含义: 用一个已知对象的数据成员的值拷贝给正在创建的 另一个同类的对象