您的位置:首页 > 编程语言 > C语言/C++

<C++>14.构造函数的重载与拷贝构造函数

2017-10-05 18:07 239 查看

14.构造函数的重载与拷贝构造函数

一、构造函数的重载

在一个类中可以定义多个构造函数,以便对类的对象提供不同的初始化方法,以适应不同的情况。这成为构造函数的重载

注意:

在一个类中,当无参数的构造函数和带默认参数的构造函数重载时,有可能产生歧义。

例:

class A

{

public:

A(){}

A(int i=0){a=i;}

private:

int a;

};

 

int main(void)

{

A op1(1); // 正确

A op2(); // 错误

return 0;

}

 

二、拷贝构造函数

1、概述:拷贝构造函数是一种特殊的构造函数,其形参是本类对象的引用。

 

2、作用:在建立一个新对象时,使用一个已经存在的对象去初始化这个新对象。

 
3、定义形式:构造函数名 (类名
&)

 

4、拷贝函数的特点

1)拷贝构造函数只有一个参数,参数是同类对象的引用。

2)名字必须与类名相同,且没有返回值。

3)每一个类必须至少有一个拷贝构造函数。若没有定义拷贝构造函数,系统会自动生成一个默认的拷贝构造函数。

 

5、调用拷贝构造函数的三种情况

1)当用类的一个对象去初始化该类的另一个对象时。

2)当函数的形参是类的对象,调用函数进行形参和实参结合时。

3)当函数的返回值是对象,函数执行完毕返回调用者时。

 

三、浅拷贝与深拷贝

1、浅拷贝

由默认的拷贝构造函数所实现的数据成员逐一赋值。

2、深拷贝

通常用于类中函数指针变量时,显示地定义一个拷贝构造函数,使之不但复制数据成员,而且为对象分配各自的内存空间。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐