Chinaunix首页 | 论坛 | 博客
  • 博客访问: 155995
  • 博文数量: 44
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 407
  • 用 户 组: 普通用户
  • 注册时间: 2015-11-10 13:28
个人简介

仰望星空

文章分类
文章存档

2016年(22)

2015年(22)

我的朋友

分类: C/C++

2016-03-08 20:17:26


点击(此处)折叠或打开

  1. /*
  2.  *复制构造函数
  3.  *用一个已知的对象初始化另一个对象
  4.  */

  5. #include <iostream>

  6. using namespace std;

  7. class test
  8. {
  9. private:
  10.     int x, y;

  11. public:
  12.      test(int a, int b):x(a), y(b){}
  13.      test(test( &c ));
  14.      int getx(){return x;}
  15.      int gety(){return y;}
  16. };

  17. test::test(test &c )//复制函数,注意这个形式
  18. {
  19.     x = c.x;
  20.     y = c.y;
  21. }


  22. int main()
  23. {// 复制构造函数其实是对象的复制
  24.     test t1(11, 22);
  25.     cout<<"x = "<<t1.getx()<<" , "<<"y = "<<t1.gety()<<endl;
  26.     test t2(t1);
  27.     cout<<"x = "<<t2.getx()<<" , "<<"y = "<<t2.gety()<<endl;
  28.     return 0;
  29. }


  30. #include <iostream.h>

  31. class Complex
  32. {

  33. public:
  34.     Complex();
  35.     Complex(double x, double y);
  36.     Complex(Complex & c); //复制初始化构造函数

  37.     double GetRel(){return rel;}
  38.     double GetImg(){return img;}

  39. private:
  40.     double rel, img;
  41. };

  42. Complex::Complex()
  43. {
  44.     rel = 0; img = 0;
  45.     cout<<"缺省构造函数被调用"<<endl;
  46. }

  47. Complex::Complex(double x, double y)
  48. {
  49.     rel = x; img = y;
  50.     cout<<"构造函数被调用"<<endl;
  51. }

  52. Complex::Complex(Complex & c)
  53. {
  54.     rel = c.rel;
  55.     img = c.img;
  56.     cout<<"复制初始化构造函数被调用"<<endl;
  57. }

  58. Complex fun(Complex c)//复制构造函数的定义
  59. {
  60.     cout<<"在函数fun中"<<endl;
  61.     double x,y;
  62.     x = c.GetRel() * 10;
  63.     y = c.GetImg() + 100;
  64.     Complex x1(x, y);//调用构造函数
  65.     return x1;
  66. }

  67. void main()
  68. {
  69.     Complex c1(6.8, 7.23), c2;//c1调用构造函数,c2调用缺省构造函数
  70.     c2 = fun(c1);//c1 传到c调用复制构造函数,传到c2调用复制构造函数
  71.     cout<<"("<<c2.GetRel()<<" ,"<<c2.GetImg()<<")"<<endl;
  72. }

阅读(1204) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~