#include<iostream>
#include<string>
#include<cstring>
template<typename T>
inline T const& max(T const& a,T const& b)
{
return a<b ? b:a;
}
template<typename T>
inline T * const& max(T *const& a,T* const& b)
{
return *a<*b?*b:*a;
}
template<typename T>
inline char const* const& max(char const* const& a,char const* const& b)
{
return std::strcmp(a,b)<0? b: a;
}
int main()
{
int a=6;
int b=38;
::max(a,b);
std::string s="hello";
std::string f="world";
::max(s,f);
int *p1=&b;
int *p2=&a;
::max(p1,p2); //这里报错
char const *s1 ="David";
char const *s2="Nico";
::max(s1,s2); //这里报错
return 0;
}
注意:在vc6.0重编译出错。
改成如下:
#include<iostream>
#include<string>
#include<cstring>
template<typename T>
inline T const& max(T const& a,T const& b)
{
return a<b ? b:a;
}
template<typename T>
inline T /***/ const& max(T *const& a,T* const& b)
{
return *a<*b?*b:*a;
}
#if 0
//template<typename T>
inline char const* const/*&*/ max(char const* const& a,char const* const& b)
{
return std::strcmp(a,b)<0? b: a;
}
#endif
int main()
{
int a=6;
int b=38;
::max(a,b);
std::string s="hello";
std::string f="world";
::max(s,f);
int *p1=&b;
int *p2=&a;
::max<int>(p1,p2); //这里报错
char const *s1 ="David";
char const *s2="Nico";
::max<const char>(s1,s2); //这里报错
return 0;
}
注意:max会被认为是重定义。需要指定具体使用的模板。
分享到:
相关推荐
(1)输人并运行所给的参考程1...(4)使用重载函数模板重新实现上小题中的函数Maxl。 (5)使用系统函数pow(x,y)计算xy的值,注意包含头文件math.h。 (6)用递归的方法编写函数求Fibonacci级数,观察递归调用的过程。
C++函数重载的例子解析,C++函数模板重载
一 函数重载 二函数模板 三类模板 的说明及代表代码
C++设计新思维:泛型编程与设计模式之应用.pdf 带目录书签
C++高效编程:内存与性能优化(pdf版),深入C++经典好书!
模板函数重载匹配规则可以引用《c++ primer》中的一段话来总结: 对于一个调用,其候选函数包括所有模板实参推断成功的函数模板实例。 候选的函数模板总是可行的,因为模板实参推断会排除任何不可行的模板。 与...
Template所代表的泛型编程是C++语言中的重要的组成部分,我将通过几篇blog对这半年以来的学习做一个系统的总结,本文是基础篇的第一部分。 为什么要有泛型编程 C++是一门强类型语言,所以无法做到像动态语言(python...
C++模板元编程,ISBN:9787111267423,作者:(美)大卫 等著,荣耀 译 原作名: C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond 出版年: 2010-1 页数: 277
鸡啄米:C++编程入门系列之十一(重载函数与函数模板) 第四部分:类与对象 鸡啄米:C++编程入门系列之十二(类与对象:面向对象设计的基本思 想和特点) 鸡啄米:C++编程入门系列之十三(类与对象:类的声明...
C++编程实例100篇,里面有很多很基础的编程实例,可以作为参考。
C++程序设计与实践:11-模板和泛型编程.ppt
重载构造函数,调用成员函数,供C++初学者理解构造函数重载的概念
谭浩强老师c++课本函数模板例题,c++函数模板使用,供大家学习使用。
c++之第五函数重载与缺省参数c++之第五函数重载与缺省参数c++之第五函数重载与缺省参数c++之第五函数重载与缺省参数
C++单目运算符重载 单目运算符只有一个操作数,如!a,-b,&c,*p,还有最常用的++i和–i等。重载单目运算符的方法与重载双目运算符的方法是类似的。但由于单目运算符只有一个操作数,因此运算符重载函数只有一个参数...
内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚函数、模板和包容器...
C++ 相关编程技巧点滴 一些常用或网上不太容易直接查到的C++ 编程技巧说明, 一些为本人编成经验的总结
内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚函数、模板和包容器...
Android C++高级编程:使用NDK(完整版带书签),目前来说最好的了
并且通过运用这些模板技术(例如元编程等),实现了多个设计模式的代码框架的自动生成,书不厚,正文内容不过300页,但是书中没有废话,每一章的内容都很精彩,值得仔细推敲和研究,虽然里面有少量错误(有些可能是...