您好!欢迎来到南京前程网   学员登录 | 学员注册 | 机构登录 | 机构注册
+ 前程网微信
QQ登录
全国统一热线:400-019-0198
您所在的位置:首页 -> 看新闻  -> 计算机

注册免费送体验金平台

来源:南京前程网    点击量:[37]    发布时间:2019-07-11    加入收藏

拷贝构造函数
拷贝构造函数在下列情况下被调用:用已经存在的对象去初始化同一个类的另一个对象;在函数的参数中,以传值方式传递类对象的拷贝;类对象的值被用做函数的返回值。拷贝构造函数和前面说到的转换构造函数有些相似。转换构造函数是把一个类的对象转化为另一个类的对象;拷贝构造函数是用一个已经存在的对象的值实例化该类的一个新对象。 
  不同对象间的初始化和赋值的区别:赋值操作是在两个已经存在的对象间进行的;而初始化是要创建一个新的对象,并且其初值来源于另一个已存在的对象。编译器会区别这两种情况,赋值的时候调用重载的赋值运算符,初始化的时候调用拷贝构造函数。 
  如果类中没有拷贝构造函数,则编译器会提供一个默认的。这个默认的拷贝构造函数只是简单地复制类中的每个成员。 
   #include iostream.h 
   #include string.h 
   class Date 
   { 
   int mo, da, yr; 
   char* month; 
   public: 
   Date(int m = 0, int d = 0, int y = 0); 
   Date(const Date &);
   ~Date(); 
   void display() const; 
   }; 
   Date::Date(int m, int d, int y) 
   { 
   static char* mos[] = 
   { 
   January, February, March, April, May, June, 
   July, August, September, October, November, December 
   }; 
   mo = m; da = d; yr = y; 
   if (m != 0) 
   { 
   month = new char[strlen(mos[m-1])+1]; 
   strcpy(month, mos[m-1]); 
   } 
   else 
   month = 0; 
   } 
   Date::Date(const Date & dt)
   { 
   mo = dt.mo; 
   da = dt.da; 
   yr = dt.yr; 
   if (dt.month != 0) 
   { 
   month = new char [strlen(dt.month)+1]; 
   strcpy(month, dt.month); 
   } 
   else 
   month = 0; 
   } 
   Date::~Date() 
   { 
   delete [] month; 
   } 
   void Date::display() const 
   { 
   if (month != 0) 
   cout << month <<' '<< da << , << yr << std::endl;
   } 
   int main() 
   { 
   Date birthday(6,24,1940); 
   birthday.display(); 
   Date newday = birthday; 
   newday.display(); 
   Date lastday(birthday); 
   lastday.display(); 
   return 0; 
   } 
  本例中,用到了两次拷贝构造函数。一个是使用普通的C++初始化变量的语句: 
   Date newday = birthday; 
  另一个是使用构造函数的调用约定,即把初始化值作为函数的参数: 
   Date lastday(birthday);

 

  • 咨询电话:025-8698220086982230

    咨询QQ:279768085 、879324637

    更多优惠活动,请大家关注前程网微信~

[责任编辑: 1 ]
  • 暂无机构发布信息。

全国统一报名专线

400-019-0198

在线咨询:点击进入>>

招生合作 | 合作 | 会员合作 | 网站加盟 | 网站介绍 | 诚聘英才 | 友情链接 | 联系我们 | 网站声明 | 点击这里给我发消息    点击这里给我发消息
国家工业与信息化部网站经营许可证编号:苏B2-20110182  国家工业与信息化部备案号:苏ICP备10003297号-2
江苏省信息化协会会员网站 江苏省互联网协会会员网站 工业和信息化部
Copyright © 2005-2019 前程网 江苏指点前程信息科技有限公司 All Rights Reserved
网络支持:江苏教育在线 江苏招生考试网