以下是代码段.
#include <stdio.h>
void bar(char* ptr) {
printf("bar(char*) is called\n");
}
void bar(bool ptr) {
printf("bar(bool) is called\n");
}
int main() {
const char* str = "abc";
bar(str);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
何时bar()传递const char*参数,为什么bar(bool)被调用?不bar(char*)应该叫?
其原因是,没有来自隐式转换const char*到char*,但有一个从const char*到bool.
以下是bar(const char*)调用时的示例(注释已添加const):
#include <stdio.h>
void bar(const char* ptr) { printf("bar(const char*) is called\n"); }
void bar(bool ptr) { printf("bar(bool) is called\n"); }
int main()
{
const char* str = "abc";
bar(str);
return 0;
}
Run Code Online (Sandbox Code Playgroud)