我爱黑客网首页 设为首页
加入收藏
联系我们
 首 页  技术文章 下载中心 站长学院 交流论坛
 软件:
 文章:        教程:
 推荐: 我爱黑客网论坛
 
 
 
 
   
黑软: Q Q 软件 木马间谍 探嗅监听 溢出攻击 加密解密 漏洞扫描 脚本注入 远程控制 综合利用 聊天工具  
 
技术文章: 爱黑新闻 | 黑客攻防 | 网络技术 | 程序设计 | 系统操作 | 本站动态 | 业界动态 | 安全公告 | 病毒公告 | 八卦黑客
 
 
您当前的位置:我爱黑客 -> 程序设计 -> C++ -> C++综合 -> 文章内容  
栏目导航
· C++综合 · C++通信
· C++视图 · C++图象
· C++系统 · C++多媒体
· C++界面 · C++文件
· C++数据库 · C++网络
热门文章
· C/C++中的结构体
· C/C++中结构体(struct..
· C++中类的继承特性
· C++启蒙之控制结构
· C++面向对象编程入门:..
· C++面向对象编程入门:..
· 理解C++面向对象程序设..
· C++类对象的复制-拷贝..
· C++类静态数据成员与类..
· C++友元的入门教程
· C++中类的多态与虚函数..
· 类的分解,抽象类与纯..
相关文章

· C++面向对象编程入门..
· C++类静态数据成员与..
· [图文] C++类的多重继..
· C++类的继承与多重继..
· C++中利用构造函数与..
· C++类对象的拷贝构造..
· More Effective C++..
· C++类和接口的设计原..
· [组图] C语言的结构和..
查看更多与C++类对象的复制-拷贝构造函数相关内容

C++类对象的复制-拷贝构造函数
作者:幽火  来源:www.5ihack.com  发布时间:2007-1-8 17:11:54  发布人:ghostfire

减小字体 增大字体

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

  int a = 10;

  int b =a;

  自己定义的类的对象同样是对象,谁也不能阻止我们用以下的方式进行复制,例如:

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

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

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

  代码如下:

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

  上面代码中的Test(Test &c_t)就是我们自定义的拷贝构造函数,拷贝构造函数的名称必须与类名称一致,函数的形式参数是本类型的一个引用变量,且必须是引用。

  当用一个已经初始化过了的自定义类类型对象去初始化另一个新构造的对象的时候,拷贝构造函数就会被自动调用,如果你没有自定义拷贝构造函数的时候系统将会提供给一个默认的拷贝构造函数来完成这个过程,上面代码的复制核心语句就是通过Test(Test &c_t)拷贝构造函数内的p1=c_t.p1;语句完成的。如果取掉这句代码,那么b对象的p1属性将得到一个未知的随机值;

查看更多与C++类对象的复制-拷贝构造函数相关内容

[ ] [返回上一页] [打 印] [收 藏]
上一篇文章:
下一篇文章:
      C++类静态数据成员与类静态成员函数       理解C++面向对象程序设计中的抽象理论
∷相关文章评论∷   (评论内容只代表网友观点,与本站立场无关!) [发表评论]
 
 
 
 
晋ICP备05008232   维护网络安全、传播安全技术才是我们的目标! 
 
关于本站 - 网站帮助 - - 下载声明 - 友情连接 -网站地图