今天我遇到了一个奇怪的情况,我需要一个函数不要隐式转换值。
在谷歌上搜索后,我找到了这个链接:http://www.devx.com/cplus/10MinuteSolution/37078/1954
但我认为为每种我想要阻止的类型使用函数重载有点愚蠢,所以我做了以下操作。
void function(int& ints_only_please){}
int main() { char a=0; const int b=0; function(a); function(b); }
我把代码给一个朋友看,他建议在int前加上const,这样变量就不可编辑了。然而,当我这样做时,编译器开始正常编译,但实际上不应该如此。请看下面的内容了解详情。
void function(const int& ints_only_please){}
int main() { char a=0; int b=0; function(a); //编译器应该在这里停止,但是对于const int它没有停止 function(b); }
有人知道为什么吗?
char
可以隐式转换为int
。 - John Dibling