代码如下:
#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数组。
C++里面字符串字面值是const char数组。
10
char* Min(char *a, char *b)
改成:
const char* Min(const char *a, const char *b)
改成:
const char* Min(const char *a, const char *b)
5
不要纠结各种常量了,这个世界上唯一不变的就是变化。用API WriteProcessMemory还能修改正运行的其它进程的内存里面的所谓常量呢!