C++拷贝构造函数为何不能传值,必须传指针或者引用
【摘要】 先看以下简单地代码:
#include<iostream>
using namespace std;
class A
{
public:
A(){}//构造函数
A(A p_a)//错误的拷贝构造函数
{
m1 = p_a.m1;
}
A(A&p_a)//正确的拷贝构造函数
{
m1 = p_a.m1;
}
privat...
先看以下简单地代码:
#include<iostream>
using namespace std;
class A
{
public:
A(){}//构造函数
A(A p_a)//错误的拷贝构造函数
{
m1 = p_a.m1;
}
A(A&p_a)//正确的拷贝构造函数
{
m1 = p_a.m1;
}
private:
int m1;
};
int main(void)
{
A a1;
A a2(a1);//调用拷贝构造函数,来创建a2
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
若是传值的话 实参a1 传给形参 p_a 时,调用的还是拷贝构造函数;
那相当于拷贝构造函数在执行的时候调用了自己,产生了一个递归,死循环;
拷贝构造函数不能传值,传指针和引用就不会存在这个问题
文章来源: blog.csdn.net,作者:IM-STONE,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/doubleintfloat/article/details/114004047
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)