CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

拷贝构造函数是什么?

楼主okjwd(okjwd)2004-12-03 11:52:37 在 C/C++ / C++ 语言 提问

我看C++,不知道其含义,姐妹们请解释一下 问题点数:0、回复次数:13Top

1 楼goodluckyxl(被人遗忘的狗)回复于 2004-12-03 11:55:12 得分 0

站住一下  
  明天对于构造函数我会为大家做些总结  
  对于拷贝构造也讨论了  
  到时   再给你答案吧Top

2 楼tulading(尧石)回复于 2004-12-03 11:57:14 得分 0

是在传递的参数是对象时,用来构造临时对象Top

3 楼horisly(SUN YAT-SEN UNIVERSITY (逸仙先生))回复于 2004-12-03 12:38:36 得分 0

goodluckyxl(被人遗忘的狗)   (   )   信誉:105    
  站住一下  
  明天对于构造函数我会为大家做些总结  
  对于拷贝构造也讨论了  
  到时   再给你答案吧  
  -----------------------------  
  期待...Top

4 楼zjyu88(刚步入三流大学)回复于 2004-12-03 12:48:42 得分 0

我也期待....  
  ---------------------------  
  我看C++,不知道其含义,姐妹们请解释一下  
  ------------------------------  
  姐妹们?????你是女的??Top

5 楼willko(珂http://www.willko.cn)回复于 2004-12-03 12:55:46 得分 0

可以看成是初始化对象的其中一种方法。Top

6 楼gimney(星外来客)回复于 2004-12-03 12:57:47 得分 0

简单说和=号用法差不多,可以重载=Top

7 楼ZengMuAnSha(曾牧暗鲨)回复于 2004-12-03 13:02:18 得分 0

简单说和=号用法差不多,可以重载=可以看成是初始化对象的其中一种方法。  
   
  Top

8 楼goodluckyxl(被人遗忘的狗)回复于 2004-12-03 13:04:59 得分 0

http://community.csdn.net/Expert/topic/3612/3612455.xml?temp=.2466699  
  楼主看看吧    
  我这里是对构造函数可能的问题先进行描述  
  等过阵讲   一些相对基础的   东西  
  有问题   短消息Top

9 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2004-12-03 14:24:23 得分 0

防止位拷贝带来的副作用Top

10 楼wwxsoft(婉儿)回复于 2004-12-03 16:18:20 得分 0

拷贝构造函数是一种特殊的构造函数,具有一般构造函数的所有特性,起形参是本类的对象的引用,其作用是使用一个已经存在的对象(由拷贝构造函数的参数指定的对象)去初始化一个新的同类得对像。Top

11 楼wwxsoft(婉儿)回复于 2004-12-03 16:22:14 得分 0

用户可以根据自己实际问题的需要顶一特定的拷贝构造函数,以实现同类对象之间数据成员的传递。如果用户没有声明类的拷贝构造函数,系统就会自动生成一个缺省函数,这个缺省拷贝构造函数的功能是把初始值对象得每个数据成员得值都复制到新建立的对象中。因此,也可以说是完成了同类对象的科龙,这样的道德对象和原对象具有完全相同的数据成员,即完全相同的属性。Top

12 楼qnjian(南一郎 )回复于 2004-12-03 16:36:23 得分 0

一、首先要弄明白什么时候会调用复制构造函数:  
  1、将某个对象初始化为同一个类中的另一个对象时。  
  如:Cat   a;  
          Cat   b(a);//Cat是一个类  
  2、将对象当作参数传递给函数时。  
  3、函数返回对象时。  
  如 Cat   Cat::   getValue();  
  二、默认情况,编译器是会提供复制构造函数的。但只是将原始对象的成员一个一个原样复制到新创建的对象中去的(这叫所谓的“浅复制”)。如果成员中有指针的话就会出问题。新对象的指针成员与老对象的指针成员会指向同一个地址。这样,改变一个对象的这一成员,会改变到另一个对象的状态。这不是我们的初衷,所以要自定义一个复制构造函数,实现“深复制”,使新对象的指针成员取得一个新地址,只不过该地址存放的值与源对象相同。  
  三、为了提高效率,降低资源占用,能用引用代替的地方,请尽量用引用,这样就不需要调用复制构造函数啦,因为引用是对象的别名,就是对象本身啦。  
   
  下面给出一个例子:  
  /*本程序考察复制构造函数之用法*/  
  #include<iostream>  
  #include<string.h>  
  use   namespace   std;  
   
  class   String  
  {  
  private:  
  char   *   str;  
  public:  
  String(char   *   s)//   普通数构造函数  
  {  
  cout<<"在构造函数中\n";  
  int   size=strlen(s);  
  str=new   char[size+1];  
  strcpy(str,s);  
  }  
  String(String   &   ss)//复制构造函数  
  {  
  cout<<"在复制构造函数中\n";  
  str=new   char[strlen(ss.str)+1];  
  strcpy(str,ss.str);  
  }  
  ~String()  
  {delete   str;}  
  void   showstring()  
  {cout<<str<<endl;}  
  };  
   
  int   main()  
  {  
  String   s1="内存中的字符串";  
  cout<<"s1=";  
  s1.showstring();  
  String   s2(s1);  
  cout<<"s2=";  
  s2.showstring();  
  return   0;  
  }  
  Top

13 楼qnjian(南一郎 )回复于 2004-12-03 16:38:44 得分 0

不好意思,打快了,上面的use语句应该为:using   namespace   std;Top

相关问题

  • 什么时候调用构造函数和拷贝构造函数?
  • C++拷贝构造函数
  • 拷贝构造函数??
  • 拷贝构造函数
  • 类的默认的位拷贝构造函数为什么会调用其成员A的拷贝构造函数?
  • 什么是拷贝构造函数,它的作用是什么??
  • 在C++中的拷贝构造函数是干什么用的?
  • 拷贝构造函数的参数为什么不能加const
  • C++中的拷贝构造函数是什么意思
  • 类默认的拷贝构造函数是什么样的?

关键词

  • c++
  • 函数
  • 拷贝
  • 指针
  • 数据
  • 对象
  • 构造
  • 拷贝构造
  • 复制
  • 成员

得分解答快速导航

  • 帖主:okjwd

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo