/*
* Copyright (c) 2014, 烟台大学计算机学院
* All rights reserved.
* 文件名称:test.cpp
* 作 者:呼亚萍
* 完成日期:2015年4月15日
* 版 本 号:v1.0
*
* 问题描述: 阅读教材例10.1。该例实现了一个复数类,但是美中不足的是,复数类的实部和虚部都固定只能是double型的。可以通过模板类的技术手段,设计Complex,使实部和虚部的类型为定义对象时指定的实际类型。要求类成员函数在类外定义。
* 程序输入:相应的程序
* 程序输出:对应得结果
*/
#include <iostream>
using namespace std;
template <class T>
class Complex
{
public:
Complex(T x,T y):real(x),imag(y) {}
Complex()
{
real=0;
imag=0;
}
Complex complex_add(Complex &c2);
void display();
private:
T real;
T imag;
};
template <class T>
Complex<T> Complex<T>::complex_add(Complex <T> &c2)
{
Complex <T> c;
c.imag=c2.imag+imag;
c.real=c2.real+real;
return c;
}
template <class T>
void Complex<T>::display()
{
cout<<"("<<real<<","<<imag<<")";
}
int main()
{
Complex<int>c1(3,4),c2(5,-10),c3;
c3=c1.complex_add(c2);
cout<<"c1+c2=";
c3.display();
return 0;
}
运算结果:
知识点总结:
使用了模板的类,将不再独立使用,其类名的完整表示为“类模板名<虚拟类型参数>,每一个成员函数的定义前,必须要声明类模板 ,凡用到类名处也用“类模板名<虚拟类型参数>”形式;
学习心得:
进一步熟悉了类模板的用法。