c++旧教材--p82(调用复制的构造函数)

源程序:

#include <iostream>

using namespace std;

class Point

{

private:

  int X,Y;

public:

  Point(int a=0,int b=0)    //构造函数,默认参数

  {

    X=a;

    Y=b;

    cout<<"Initializing"<<endl;

  }

  Point(const Point &p);   //复制构造函数

  int GetX()

  {

    return X;

  }

  int GetY()

  {

    return Y;

  }

  void Show()

  {

    cout<<"X="<<X<<",Y="<<Y<<endl;

  }

  ~Point()

  {

    cout<<"delete..."<<X<<","<<Y<<endl;

  }

};

Point::Point(const Point &p)    //定义复制构造函数

{

  X=p.X;

  Y=p.Y;

  cout<<"Copy Initializing"<<endl;

}

void display(Point p)    //对象作为参数

{

  p.Show();

}

void disp(Point &p)      //对象的引用作为函数的参数

{

  p.Show();

}

Point fun()

{

  Point A(101,202);

  return A;            //函数的返回值是对象

}

void main()

{

      Point A(42,35);

  Point B(A);       //对象A初始化对象B,第一次调用复制构造函数

  Point C(58,94);

  cout<<"called display(B)"<<endl;

  display(B);       //对象B是函数的参数,第二次调用复制构造函数

  cout<<"Next..."<<endl;

  cout<<"called disp(B)"<<endl;

  disp(B);

  cout<<"call C=fun()"<<endl;

  C=fun();          //对象C是函数的返回值,第三次调用复制构造函数

  cout<<"called disp(C)"<<endl;

  disp(C);

  cout<<"out..."<<endl;

}

运行结果:

 

原文地址:https://www.cnblogs.com/duanqibo/p/12021988.html