拷贝构造函数的三种应用

//拷贝构造函数的三种应用:
//(1)函数值的整体拷贝;(2)函数参数调用;(3)返回值

#include "stdafx.h"
#include <iostream>
#include <math.h>
using namespace std;

class complex
{
private:
	double real;
	double imag;
public:
	complex(double r=0.0,double i=0.0)
	{
		real=r;
		imag=i;
	}
	//函数的引用,相当于赋别名
	complex(complex &c)
	{
		real=c.real;imag=c.imag;
	}
    double realcomplex()
	{
		return real;
	}
	double imagcomplex()
	{
		return imag;
	}
	double abscomplex()
	{
		double t;
		t=real*real+imag*imag;
		return sqrt(t);
	}
};

void display(complex p)//普通函数调用,但参数是一个类类型的参数
{
    cout<<"real of p:"<<p.realcomplex()<<"\n"<<"imag of p:"<<p.imagcomplex()<<"\n"  
        <<"abs of p:"<<p.abscomplex()<<endl;  
 
}

complex fun()  //定义的函数返回值类型为类类型
{
	complex m(2.1,3.2);
	return m;
}
void main()
{
	complex a(1.2,3.4);//第一种情况,对象拷贝,在同是类类型的基础上
	complex b(a);
	cout<<"real of a:"<<a.realcomplex()<<"\n"<<"imag of a:"<<a.imagcomplex()<<"\n"  
        <<"abs of a:"<<a.abscomplex()<<endl;  
    cout<<"real of b:"<<b.realcomplex()<<"\n"<<"imag of b:"<<b.imagcomplex()<<"\n"  
        <<"abs of b:"<<b.abscomplex()<<endl;  
     
    complex c(2.4,4.5);//第二种情况,类类型参数传递
	display(c); 

	complex n;//第三种情况,返回值为一个类类型对象
	n=fun();
    cout<<"real of n:"<<n.realcomplex()<<"\n"<<"imag of n:"<<n.imagcomplex()<<"\n"  
        <<"abs of n:"<<n.abscomplex()<<endl;  
    system("pause");  
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值