2014-03-05 17 views
0

定義兩個類函數是合法的嗎?一個重載了一個string的引用,另一個重載了const char*函數重載的字符串引用和常量字符指針

void funcA(const std::string& s) 
void funcA(const char* s) 

我可以保證,如果我叫funcA()const char*輸入時,它不會調用字符串函數?我在問,因爲從const char*string有一個隱含的構造。

回答

4

是的,它是有效的。如果您通過const char*,則第二次過載是完全匹配的,這比所有其他過載,尤其是涉及用戶定義的轉換的過載(例如轉換爲const std::string)更受歡迎。

+1

感謝您的快速響應! – duffsterlp