复制构造函数和类的组合

复制构造函数的作用:使用一个已经存在的对象(由复制构造函数的参数指定),去初始化同类的一个新对象。如果系统没有复制构造函数,系统会自动生成一个隐含的复制构造函数。

例:

#include <iostream>

using namespace std;

class Point{

public:

Point(int xx=0,int yy=0){

x=xx;

y=yy;

}

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

int getX()

{

 return x;

}

int getY(){

return y;

}

private:

int x,y;

};

Point ::Point(Point &p)//复制构造函数的实现

{

 x=p.x;

y=p.y;

cout<<"Calling the Copy construct "<<endl;

}

void fun1(Point p)//形参为Point类对象的函数

{

 cout<<p.getX()<<endl;

}

Point fun2()//返回值为Point类型的函数

{

   Point a(1,2);

  return a;

}

//主函数

int main()

{

Point a(4,5);

point b=a;//用一个已存在的对象对另一对象赋值

cout<<b.geetX()<<endl;

fun1(b);//如果函数的形参是类的对象,调用函数时,进行形参和实参结合时

b=fun2();//如果函数的返回值是类的对象,函数执行完成返回调用者

cout<<b.getX()<<endl;

return 0;

}

默认复制构造函数的功能:将一个对象的非静态成员的值逐个复制给另一个对象,注意复制的是成员的值,这种复制方式也称为浅复制。因为静态成员属于整个类,而不属于某个对象,所以调用复制构造函数时静态成员不会受到影响。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值