模版类运算符重载
2016-03-04 20:27
323 查看
<span style="font-size:18px;">自定义分数模版类,运算符重载,同时支持宽字符,wchar_t</span>
<span style="font-size:18px;"> </span>
<span style="font-size:18px;">#include<iostream> #include<sstream> #include<cmath> template<typename classT> //分数模版类 class Fraction { public: Fraction()=default; Fraction(classT m,classT d):mol(m),del(d){} Fraction<classT>& operator=(const Fraction<classT>&); classT numerator()const; classT denominator()const; private: classT mol,del; }; template<typename classT> inline Fraction<classT>& Fraction<classT>::operator=(const Fraction<classT>& rhs) { this->mol=rhs.mol; this->del=rhs.del; return *this; } template<typename classT> inline classT Fraction<classT>::numerator()const { return mol; } template<typename classT> inline classT Fraction<classT>::denominator()const { return del; } template<typename charT,typename traits=std::char_traits<charT>,typename classT> //输入运算符, inline std::basic_istream<charT,traits>& //支持国际化char和wchar_t operator>>(std::basic_istream<charT,traits>& strm,Fraction<classT>& f) { int n,d; strm>>n; if(strm.peek()=='/') { strm.ignore(); strm>>d; } else { d=1; } if(d==0) { strm.setstate(std::ios::failbit); return strm; } if(strm) { f=Fraction<classT>(n,d); } return strm; } template<typename charT,typename traits=std::char_traits<charT>,typename classT> //输出运算符 inline std::basic_ostream<charT,traits>& operator << (std::basic_ostream<charT,traits>& strm, const Fraction<classT>& f) { std::basic_ostringstream<charT,traits> s; s.copyfmt(strm); s.width(0); s<<f.numerator()<<'/'<<f.denominator(); strm<<s.str(); return strm; } int main() { Fraction<double> b; std::cin>>b; std::cout<<b; } </span>
相关文章推荐
- IOS 开发 之 NSFileManager
- 认知计算是2万亿美元的盛宴,IBM喊你到碗里来!
- 【Memcached】集群搭建——memcached内存管理机制
- 结合遗传和蚁群算法的图像边缘特征提取
- 最大连续子序列VS最长公共子序列
- centos 6.5 系统下 maba服务安装与配置
- IOS 开发 之 沙盒机制
- 用C++实现一个自动注册的工厂
- DrawRect视图重绘的简要功能概述
- ue4点滴
- Swift 初体验之三(终结篇),实现登陆注册
- PL/SQL Developer在64位操作系统上通过instantclient连接到oracle数据库
- OC_字符串的各种方法与类别
- Linux系统下MySQL数据库的备份和恢复
- 交换机access和trunk的一些小结(转)
- Java连接MySQL数据库
- 五种不同的 URL 参数解析方法的性能比较
- Qt4跟Qtopia2.2到底差在哪??
- Java StringBuilder & StringBuffer 源代码分析
- 项目管理中的任务分配