C++中复制构造函数被调用的三种情况
C++中的构造函数c++中的构造函数分为构造函数,和复制构造函数,相比于构造函数,复制构造函数使用更加方便,快捷。构造函数可以有多个,二复制构造函数只能有一个,因为复制构造函数的参数 复制构造函数同构造函数的功能大体相同·,却又有不同之处,下面介绍复制构造函数在3中情况下的调用 Complex c1(c2); Complex c1=c2; 这两条语句时等价的,其中第二句是初始化语句,不是赋值语句 Complex c1,c2; c1=c2;
#include<iostream> using namespace std; class A{ public: A(){};//构造函数 A(A&a)//复制构造函数 { cout<<"Copy constructer called"<<endl; } }; void Func(A a)//普通函数 { } int main() { A b; Func(b);//此语句相当于是将b复制给Func(a)中的a,导致调用复制构造函数 retur 0; } 程序运行截图 3.如果函数返回的是类A的对象,那么函数返回时,类A的复制构造函数会被调用 #include<iostream> using namespace std; class A{ public: int v; A(int i){ v=i; };//构造函数 A(A&a)//复制构造函数 { cout<<"Copy constructer called"<<endl; } }; A a(4); A Func()//普通函数 { return a; } int main() { cout<<Func().v<<endl;//此语句中的Func()是一个类A的对象,但是不是a,只是用a初始化。 return 0; } 以上三种情况是比较常见的复制构造函数被调用的例子 欢迎讨论,斧正 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |