#include <iostream> using namespace std; template <typename T> class Complex{ T real; T img; public: friend Complex operator+(Complex<T> &c1,Complex<T> &c2); Complex(T real=0,T img=0){ this->real=real; this->img=img; } void show(){ cout<<"("<<real<<", "<<img<<")"<<endl; } }; template <typename T> Complex operator+(Complex<T> &c1,Complex<T> &c2){ Complex c3; c3.real=c1.real+c2.real; c3.img=c1.img+c2.img; return c3; } main(){ double a,b,c,d; cin>>a>>b>>c>>d; Complex<double>c1(a,b); Complex<double>c2(c,d); Complex<double>c3; c3=c1+c2; c3.show(); return 0; }
时间: 2024-03-07 14:51:47 浏览: 50
这是一个 C++ 的程序,它定义了一个复数类 `Complex`,通过重载 `operator+` 实现复数的加法运算。该类模板接受一个模板参数 `T`,表示复数的实部和虚部的数据类型,可以是整数、浮点数等。该类有两个私有成员变量 `real` 和 `img` 分别表示复数的实部和虚部,公有成员函数 `show()` 可以输出复数对象的值。在 `main()` 函数中,用户输入四个浮点数,创建两个 `Complex` 类型的对象 `c1` 和 `c2`,并将它们相加得到 `c3`,最后输出 `c3` 的值。
相关问题
#include <iostream> using namespace std; template <typename T> class Complex{ T real; T img; public: friend Complex<T> operator+(Complex<T> &c1,Complex<T> &c2); Complex(T real=0,T img=0){ this->real=real; this->img=img; } void show(){ cout<<"("<<real<<", "<<img<<")"<<endl; } }; template <typename T> Complex<T> operator+(Complex<T> &c1,Complex<T> &c2){ Complex<T> c3; c3.real=c1.real+c2.real; c3.img=c1.img+c2.img; return c3; } int main(){ double a,b,c,d; cin>>a>>b>>c>>d; Complex<double>c1(a,b); Complex<double>c2(c,d); Complex<double>c3; c3=c1+c2; c3.show(); return 0; }
这段程序和之前的程序基本相同,只是在重载 `operator+` 函数时将返回类型改为了 `Complex<T>`,并在函数参数中显式指定了模板参数 `T`。这是因为在类模板中定义友元函数时,需要显式指定函数模板参数,否则编译器无法确定返回类型。在 `main()` 函数中,同样创建两个 `Complex<double>` 类型的对象 `c1` 和 `c2`,并将它们相加得到 `c3`,最后输出 `c3` 的值。
#include <iostream> using namespace std; template <typename T> class Complex{ public: Complex(T real=0,T img=0){ this->real=real; this->img=img; } T real; T img; }; Complex operator+(Complex c1,Complex c2){ Complex c3; c3.real=c1.real+c2.real; c3.img=c1.img+c2.img; return c3; } main(){ double a,b,c,d; cin>>a>>b>>c>>d; Complex<double>c1(a,b); Complex<double>c2(c,d); Complex<double>c3; c3=c1+c2; cout<<"("<<c3.real<<", "<<c3.img<<")"<<endl; }
这段代码实现了一个复数类 Complex,支持复数加法运算。其中,Complex 类模板中包含两个私有成员变量 real 和 img,表示复数的实部和虚部;构造函数中默认实部和虚部均为 0;重载了加法运算符 +,使得两个 Complex 类型的对象可以进行加法运算;主函数中先输入四个 double 类型的数,分别作为两个复数的实部和虚部,然后创建两个 Complex<double> 类型的对象 c1 和 c2,初始化为输入的实部和虚部;创建一个 Complex<double> 类型的对象 c3,将 c1 和 c2 相加得到的结果赋值给 c3;最后输出 c3 的实部和虚部。
你还有其他问题吗?
阅读全文