c++课堂学习(7)

这节课主要讲了函数的模板,比较简单
老师的代码:

#include <iostream>

using namespace std;

template <typename T>
void Sort(T a[],int n)
{
	T temp;
	int i,j;

	for(i=0;i<n-1;i++)
	{
		for(j=i+1;j<n;j++)
		{
			if(a[i]>a[j])
			{
				temp=a[i];a[i]=a[j];a[j]=temp;
			}
		}
	}
}

int main()
{
	int a1[9]={1,9,2,8,3,7,4,6,5};
	double a2[9]={1.1,1.9,1.2,1.8,1.3,1.7,1.4,1.6,1.5};

	//Sort<int>(a1,9);
	//Sort<double>(a2,9);

	Sort(a1,9);
	Sort(a2,9);

	for(int i=0;i<9;i++)
	{
		cout<<a1[i]<<" ";
	}
	cout<<endl;

	for(int j=0;j<9;j++)
	{
		cout<<a2[j]<<" ";
	}
	cout<<endl;

	return 0;
}

还有流插入和流提取运算符的重载,这个我不太懂,要多看几遍

#include <iostream>

using namespace std;

class CComplex;
ostream& operator <<(ostream& os,const CComplex& z);

class CComplex
{
private:
	double real;
	double imag;

public:
	CComplex();
	CComplex(double real,double imag);
	CComplex(const CComplex& z);
	~CComplex();

	double GetReal() const;
	double GetImag() const;
	void Display();
	const CComplex& operator =(const CComplex& z);
	const CComplex& operator +=(const CComplex& z);
	const CComplex& operator -=(const CComplex& z);
	const CComplex operator +(const CComplex& z) const;
	const CComplex operator -(const CComplex& z) const;

	friend ostream& operator <<(ostream& os,const CComplex& z);
};

CComplex::CComplex()
{
	cout<<"Constructor CComplex::CComplex()!"<<endl;

	real=0.0;
	imag=0.0;
}

CComplex::CComplex(double real,double imag)
{
	cout<<"Constructor CComplex::CComplex(double real,double imag)!"<<endl;

	this->real=real;
	this->imag=imag;
}

CComplex::CComplex(const CComplex& z)
{
	cout<<"Copy constructor CComplex::CComplex(const CComplex& z)!"<<endl;

	real=z.real;
	imag=z.imag;
}

CComplex::~CComplex()
{
	cout<<"Destructor CComplex::~CComplex()!"<<endl;
}

double CComplex::GetReal() const
{
	return real;
}

double CComplex::GetImag() const
{
	return imag;
}

void CComplex::Display()
{
	cout<<real<<'+'<<imag<<'i'<<endl;
}

const CComplex& CComplex::operator =(const CComplex& z)
{
	cout<<"const CComplex& CComplex::operator =(const CComplex& z)!"<<endl;

	real=z.GetReal();
	imag=z.GetImag();

	return *this;
}

const CComplex& CComplex::operator +=(const CComplex& z)
{
	real+=z.GetReal();
	imag+=z.GetImag();

	return *this;
}

const CComplex& CComplex::operator -=(const CComplex& z)
{
	real-=z.GetReal();
	imag-=z.GetImag();

	return *this;
}

const CComplex CComplex::operator +(const CComplex& z) const
{
	CComplex temp;

	temp.real=this->real+z.GetReal();
	temp.imag=this->imag+z.GetImag();

	return temp;
}

const CComplex CComplex::operator -(const CComplex& z) const
{
	CComplex temp;

	temp.real=this->real-z.GetReal();
	temp.imag=this->imag-z.GetImag();

	return temp;
}

ostream& operator <<(ostream& os,const CComplex& z)
{
	cout<<z.real<<'+'<<z.imag<<'i';

	return os;
}

int main()
{
	CComplex z1(1,1),z2(3,3),z3(2,2);
	CComplex z4(1,1),z5(3,3);
	CComplex z6;
	CComplex z7(2,2);
	CComplex z8;

	cout<<"----------"<<endl;

	//z1.operator +=(z2);
	z1+=z2;
	z1.Display();

	cout<<"----------"<<endl;

	//z1.operator -=(z3);
	z1-=z2;
	z1.Display();

	cout<<"----------"<<endl;

	//z6.operator =(z4.operator +=(z5));
	z6=z4+=z5;
	z4.Display();
	z6.Display();

	cout<<"----------"<<endl;

	//z8.operator =(z4.operator -=(z7));
	z8=z4-=z7;
	z4.Display();
	z8.Display();

	cout<<"=========="<<endl;

	CComplex z9(z1),z10(z1);

	z9.Display();
	z10.Display();

	cout<<"----------"<<endl;

	CComplex z11,z12;

	//z12.operator =(z11.operator =(z1));
	z12=z11=z1;

	z11.Display();
	z12.Display();

	cout<<"----------"<<endl;

	CComplex z13,z14;

	//z13.operator =(z1.operator +(z2));
	z13=z1+z2;
	//z14.operator =(z2.operator -(z3));
	z14=z2-z3;

	//z13.Display();
	//z14.Display();

	cout<<z13<<endl;
	cout<<z14<<endl;

	cout<<"----------"<<endl;

	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值