/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称: C++第七周任务3 * 作 者: 李洪悬 * 完成日期: 2012 年 4 月 3 日 * 版 本 号: * 对任务及求解方法的描述部分 * 输入描述: 输入点的坐标 * 问题描述:设计Complex,使实部和虚部的类型为定义对象时用的实际类型。 * 程序输出: 求点的坐标的和 * 程序头部的注释结束 */【任务3】阅读P314的例10.1(电子版的在平台上见txt文件)。该例实现了一个复数类,但是美中不足的是,复数类的实部和虚部都固定是double型的。可以通过模板类的技术手段,设计Complex,使实部和虚部的类型为定义对象时用的实际类型。 (1)要求类成员函数在类外定义。 (2)在此基础上,再实现减法、乘法和除法 你可以使用的main()函数如下。 int main( ) { Complex<int> c1(3,4),c2(5,-10),c3; c3=c1.complex_add(c2); cout<<"c1+c2="; c3.display( ); Complex<double> c4(3.1,4.4),c5(5.34,-10.21),c6; c6=c4.complex_add(c5); cout<<"c4+c5="; c6.display( ); system("pause"); return 0; }
//源代码如下
#include <iostream> using namespace std; template <class numtype> class Complex { public: Complex( ) { real=0; imag=0; } Complex(double r,double i) { real=r; imag=i; } Complex complex_add(Complex &c2); void display( ); private: numtype real; numtype imag; }; template <class numtype> Complex<numtype> Complex<numtype>::complex_add(Complex &c2) { Complex<numtype> c; c.real=real+c2.real; c.imag=imag+c2.imag; return c; } template <class numtype> void Complex<numtype>::display( ) { cout<<"("<<real<<","<<imag<<"i)"<<endl; } int main( ) { Complex<int> c1(3,4),c2(5,-10),c3; c3=c1.complex_add(c2); cout<<"c1+c2="; c3.display( ); Complex<double> c4(3.1,4.4),c5(5.34,-10.21),c6; c6=c4.complex_add(c5); cout<<"c4+c5="; c6.display( ); system("pause"); return 0; }
经验积累:类模板很好用!省去了大量代码,但是要注意每处如何声明!很关键哟!
C++第七周【任务3】设计Complex,使实部和虚部的类型为定义对象时用的实际类型。
最新推荐文章于 2023-06-17 16:16:24 发布