C++——模版:函数模版
来源:互联网 发布:灌篮高手的影响力知乎 编辑:程序博客网 时间:2024/05/16 15:36
需求分析:
学习模版的使用方法
编译环境:
visual studio 2010
解决方案:
template <class T>T Max( T a, T b ){// 比较获得a,b中的最大值 return a > b ? a : b;}class Person{//..public: Person( int nL, int nP ) : m_nLevel(nL), m_nPower(nP){ // 构造函数 }BOOL operator>( const Person& p ){ // 重载>供Max模版函数调用 if( this->m_nLevel> p.m_nLevel) return TRUE; else return FALSE; } int m_nLevel; // 等级 int m_nPower; // 实力};class Skill{//..public: Skill( int nL, int nD ) : m_nLevel(nL), m_nDamage(nD){ // 构造函数 } BOOL IsNBThan( Skill& b ){ // 供特化的Max<Skill>模版使用 if( this->m_nDamage > b.m_nDamage ) return TRUE; else return FALSE; } int m_nLevel; // 等级 int m_nDamage; // 伤害};// 模版特化,也就是针对Skill类使用下面的比较方式template <Skill>Skill Max( Skill a, Skill b ){ return a.IsNBThan( b ) ? a : b;}int _tmain(int argc, _TCHAR* argv[]){ // int类型模版 int nMax1 = Max( 3, 4 ); // double 类型模版 double dMax = Max( 3.02, 5.68 ); // 以下编译就会报错 // int nMax2 = Max( 3, 5.3 ); // double类型模版,结果转成int而已 int nMax3 = Max( 2.15, 6.66 ); // int型模版,不过参数为变量 int nMax4 = Max( nMax1, nMax2 ); // 以Person类为模版的Max函数 // 需要类重载实现>操作 // 返回等级高的Person(20,1000) Person p = Max( Person( 20, 1000 ), Person( 40, 800 ) ); // 以Skill类为模版的Max函数 // 使用特化的比较函数IsNBThan // 返回伤害高的Skill(1,2000) Skill s = Max( Skill( 1, 2000 ), Skill( 3, 600 ) ); return 0;}
返回:
C/C++——模版相关知识
阅读全文
0 0
- C++——模版:函数模版
- 模版——函数模版、类模版
- C++——模版:类模版
- C++template--函数模版
- 【c++】函数模版
- 【C++】认识模版函数
- C/C++——模版相关知识
- c++实现delegate—模版函数指针
- C++——模版:智能指针auto_ptr
- C++——模版:智能指针smart_ptr
- 模版函数
- 模版函数
- 模版函数
- 函数模版
- 函数模版
- 函数模版
- 函数模版
- 模版函数
- 仿知乎下拉刷新上拉自动加载
- MongoDB安装成为Windows服务
- Mybatis 快速入门
- SpringMVC强大的数据绑定
- HTTP请求错误400、401、402、403、404、405、406、407、412、414、500、501、502解析
- C++——模版:函数模版
- 九大排序之——选择排序
- python 基础 —— join() 方法
- 《Netty_in_Action》中文正式出版:阿里工程师耗时2年精心翻译(含试读PDF)
- php性能优化用到的函数
- NSString 的时候用copy和strong的区别
- XML,HTML以及XHTML的区别
- HDU 3899 JLUCPC (树形DP)
- QtCreator使用ibus输入中文