模板笔记7字符串作为模板参数(特别注意)
#include <iostream>
#include <string>
#include <typeinfo>
#define HH 1
#ifdef HH
template<typename T>
inline T const& max(T const& a, T const& b)
{
return a < b ? b : a;
}
#elif
template<typename T>
inline T max(T a, T b)
{
return a < b ? b : a;
}
#endif
template<typename T>
void ref (T const& x)
{
std::cout << "ref " << typeid(x).name() << std::endl;
}
template<typename T>
void nonref (T x)
{
std::cout << "nonref " << typeid(x).name() << std::endl;
}
字符串函数模拟注册int main()
{
std::string s;
std::cout << ::max("apple", "peach") << std::endl;
//::max("apple", "tomato");//如果字符串长度相同,实例化后的类类型才相同。否则报错。这种情况,重载解决。如果不重载也要调⽤长度不⼀样的,
//去掉#define HH 1 ,⾮引⽤类型的参数,在实参演绎的过程中,会出现数组到指针的类型转换
//::max("apple", s);
::ref("hello");
::nonref("hello");
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论