一、拷贝构造函数的定义:
同一个类的对象在内存中有着完全相同的结构,若作为一个整体进行复制或拷贝是完全可行的,这个拷贝过程只需要拷贝数据成员,而函数成员是可共用的(只有一份拷贝),在建立对象时可用同一类的另一个对象来初始化该对象,这是所用的构造函数成为拷贝构造函数。
系统会自动提供,称为缺省的按成员语义支持的拷贝构造函数,每个类成员依次被拷贝,也称为缺省的按成员初始化。
二、拷贝构造函数使用的三中情况:
-
当类的一个对象去初始化该类的另一个对象时;
-
如果函数的形参是类的对象,调用函数进行形参和实参结合时;
-
如果函数的返回值是类对象,函数调用完成返回时。
下面是代码实例:
#include<iostream>
using namespace std;
class Test
{
private:
int data;
public:
Test(int d = 0) :data(d) { cout << "Create Test Object:" << this << endl; }
//定义拷贝构造函数
Test(const Test& t)
{
cout << "Copy Create Test Object:" << this << endl;
data = t.data;
}
~Test() { cout << "Free Test Object:" << this << endl; }
};
int main()
{
Test t(10);
Test t1(t);
Test t2 = t1;//初始化
Test t3;
t3 = t2;//赋值
return 0;
}
输出框:
标签:初始化,对象,成员,缺省,C++,拷贝,构造函数 来源: https://blog.csdn.net/galaxyrt/article/details/118002750
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。