当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:56:00  来源:本站整理

C++类对象的深拷贝、浅拷贝构造函数[VC/C++编程]

赞助商链接



  本文“C++类对象的深拷贝、浅拷贝构造函数[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

在学习这一章内容前我们已经学习过了类的构造函数和析构函数的相关知识,关于普通范例的对象来说,他们之间的复制是很简单的,比方:

int a = 10;
int b =a;

自己定义的类的对象一样是对象,谁也不能禁止我们用以下的方法举行复制,比方:

#include <iostream>
usingnamespacestd;
classTest
{
public:
Test(inttemp)
{
p1=temp;
}
protected:
intp1;
};
voidmain()
{
Test a(99);
Test b=a;
}

普通对象和类对象同为对象,他们之间的特点有类似之处也有差别之处,类对象内部存在成员变量,而普通对象是没有的,当一样的复制办法发生在差别的对象上的时刻,那么系统对他们举行的操作也是不一样的,就类对象而言,相同范例的类对象是通过拷贝构造函数来完成整个复制历程的,在上面的代码中,我们并没有看到拷贝构造函数,一样完成了复制工作,这又是为什么呢?因为当一个类没有自定义的拷贝构造函数的时刻系统会自动供应一个默许的拷贝构造函数,来完成复制工作.

下面,我们为了阐明情形,就普通情形而言(以上面的代码为例),我们来自己定义一个与系统默许拷贝构造函数一样的拷贝构造函数,看看它的内部是若何工作的!

代码以下:

#include <iostream>
usingnamespacestd;
classTest
{
public:
Test(inttemp)
{
p1=temp;
}
Test(Test &c_t)//这里就是自定义的拷贝构造函数
{
cout<<"进入copy构造函数"<p1=c_t.p1;//这句假如去掉就不能完成复制工作了,此句复制历程的核心语句
}
public:
intp1;
};
voidmain()
{
Test a(99);
Test b=a;
cout<cin.get();
}


  以上是“C++类对象的深拷贝、浅拷贝构造函数[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

本文地址: 与您的QQ/BBS好友分享!
  • 好的评价 如果您觉得此文章好,就请您
      0%(0)
  • 差的评价 如果您觉得此文章差,就请您
      0%(0)

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .