C++中拷贝构造函数的使用
【摘要】 C++中拷贝构造函数的使用
目录
一、拷贝构造函数的概念
拷贝构造函数是一种特殊的构造函数,拷贝构造函数的作用是在创建一个新对象是,使用一个已经存在的对象去初识化这个新对象,
下面我来举一个例子:
这个的作用是在创建p1这个新对象的时候使用本来就存在的对象p2去初始化p1,在这个初始化的过程中我们就需要调用到拷贝构造函数
二、拷贝构造函数的初识
- 由于拷贝构造函数也是一种构造函数,所以它的函数名也是要和类名相等的,并且也是没有返回值的
- 拷贝构造函数只有一个同类对象引用的参数
- 每个类必须要有一个拷贝构造函数,我们可以自定义拷贝构造函数,也可以不自定义使用系统随机自动生成的一个默认的拷贝构造函数
三、拷贝构造函数定义方法
自定义拷贝构造函数的一般形式:
下面我们就来举一个简单的例子
输出结果:
四、 拷贝构造函数调用的条件
1、当用一个类的对象去初始化同类的另一个对象的时候。正如上面例子的这两条语句:
2、当一个函数的形参是一个类的对象的时候,且调用函数对形参与实参的结合时
3、当函数返回值是一个对象的时候
五、拷贝构造函数必须以引用的形式传递(参数为引用值)。
当一个对象以传递值的方式传一个函数的时候,拷贝构造函数自动的被调用来生成函数中的对象。如果一个对象是被传入自己的拷贝构造函数,它的拷贝构造函数将会被调用来拷贝这个对象这样复制才可以传入它自己的拷贝构造函数,这会导致无限循环直至栈溢出(Stack Overflow)。除了当对象传入函数的时候被隐式调用以外,拷贝构造函数在对象被函数返回的时候也同样的被调用。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)