//拷貝構造函數的三種應用:
//(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");
}
拷貝構造函數的三種應用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.