定义一个特化的模板类并实现四则运算的重载的例子

// rrr.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include using namespace std; template class complex { private: T first; T second; public: complex() { if(typeid(T) == typeid(double) || typeid(T) == typeid(float)) { first = 0; second = 0; } else throw string("illegal Type!"); } ~complex(){} complex(T f, T s) { if(typeid(T) == typeid(double) || typeid(T) == typeid(float)) { first = f; second = s; cout< < & operator=(const complex &cpx) { if(typeid(T) == typeid(double) || typeid(T) == typeid(float)) { first = cpx.first; second = cpx.second; return *this; } else throw string("illegal Type!"); } complex(const complex &cpx) { first = cpx.first; second = cpx.second; } complex operator+(complex cpx) { complex temp; temp.first = first + cpx.first; temp.second = second + cpx.second; return temp; } complex operator-(complex cpx) { complex temp; temp.first = first - cpx.first; temp.second = second - cpx.second; return temp; } complex operator*(complex cpx) { complex temp; temp.first = first*cpx.first - second*cpx.second; temp.second = second*cpx.first + first*cpx.second; return temp; } complex operator/(complex cpx) { complex temp; temp.first = (first*cpx.first + second*cpx.second)/(cpx.first*cpx.first + cpx.second*cpx.second); temp.second = (second*cpx.first - first*cpx.second)/(cpx.first*cpx.first + cpx.second*cpx.second); return temp; } void printC() { cout< < < < c(1,2),p(3,4); complex x = c/p; x.printC(); }catch(string &s) { cout< <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值