拷貝構造函數的三種應用

//拷貝構造函數的三種應用:
//(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");  
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章