模板笔记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");
}

posted @   MoonXu  阅读(652)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
历史上的今天:
2019-03-18 binutils安装
2019-03-18 汇编错误
点击右上角即可分享
微信分享提示