哇,难受,,关于模板函数的问题,怎么和书上不一样

C++语言 码拜 8年前 (2017-05-08) 1853次浏览
代码如下:

#include<iostream>
using namespace std;
template<class T>
T Min(T a, T b)
{
	return a < b ? a : b;
}
char* Min(char *a, char *b)
{
	if (strcmp(a, b) < 0)
		return a;
	else
		return b;
}
void main()
{
	cout << Min(3, 5) << endl;
	cout << Min("abc", "abd") << endl;
}

为什么第二个Min匹配了模板函数啊,不应该是匹配那个重载的函数吗,,,,

解决方案

10

改成const char*。
C++里面字符串字面值是const char数组。

10

char* Min(char *a, char *b)
改成:
const char* Min(const char *a, const char *b)

5

不要纠结各种常量了,这个世界上唯一不变的就是变化。用API WriteProcessMemory还能修改正运行的其它进程的内存里面的所谓常量呢!

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明哇,难受,,关于模板函数的问题,怎么和书上不一样
喜欢 (0)
[1034331897@qq.com]
分享 (0)