【发布时间】:2018-01-28 06:26:44
【问题描述】:
考虑这个程序:
#include <iostream>
using namespace std;
void f(unsigned char c) {
cout << c << endl;
}
void f(int c) {
cout << c << endl;
}
int main() {
f('a');
}
这会打印出97,表明选择的f() 重载是采用int 的重载。我觉得这很奇怪;凭直觉,unsigned char 不是更适合char 吗?
【问题讨论】:
-
这是因为在你的编译器上 char == signed char
-
我找不到合适的副本,但可能有一个。您正在寻找的是如何处理转换序列。
-
这很相似,应该有助于解释事情。 stackoverflow.com/questions/37166131/…
标签: c++ overloading