2
A
回答
5
原因是沒有從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;
}
2
這是由編譯器正確的行爲。 bar(char*)
不能與const char *
參數一起調用,因爲這會破壞const正確性。另一方面,bar(bool)
是一個有效的選擇,所以這就是所謂的。如果您有bar(const char*)
而不是bar(char*)
,那麼bar(const char*)
當然會優於bar(bool)
,呼叫bar(str)
。
相關問題
- 1. 使用C#中的char *參數調用DLL函數?
- 2. C#調用C++使用char **參數
- 3. 使用char *參數調用C DLL函數使用P/Invoke
- 4. C++函數中非常奇怪的優先級/優先級
- 5. c#調用函數參數
- 6. C函數參數char * vs char []
- 7. 調用參數多於參數的函數/仿函數
- 8. C/C++的參數在函數調用
- 9. 如何使用多態性參數動態調用函數
- 10. char *作爲函數的參數C
- 11. 使用高級函數中的參數/ s調用lambda
- 12. 使用嵌套佈局的參數的優先級
- 13. GNU使多個參數和多個命令的調用函數
- 14. 函數調用的參數太多
- 15. 在Xcode 8使用函數的參數和參數與C++
- 16. 動態函數參數和使用__call
- 17. 使用比較器的自定義類的優先級隊列在C++中的構造函數的參數
- 18. 如何使用數組和參考參數調用void函數
- 19. C/C++中的單個參數(函數)中的多個參數
- 20. 在C++中調用模板參數的靜態函數
- 21. 向c中的函數調用動態注入參數#
- 22. 如何用eax和esi中的參數調用函數。 gcc c + +
- 23. 用不同參數調用函數C++
- 24. 多態(通用)函數作爲C++中的參數
- 25. TypeScript中的通用類型參數推理優先級
- 26. 使用C#中的函數指針調用C++函數作爲參數
- 27. 從C#中的參數化構造函數調用無參數構造函數?
- 28. 優勢使用缺省函數參數
- 29. 使用帶有Perl參數的參數調用函數
- 30. 使用多線程中的輸入參數調用函數