我只是寫了一個函數:std :: string如何管理這個技巧?
void doSomeStuffWithTheString(const std::string& value) {
...
std::string v = value;
std::cout << value.c_str();
...
}
但後來我把這個與
doSomeStuffWithTheString("foo");
和它的作品。所以我會認爲這是行得通的(一個const char *來初始化一個std :: string的隱式實例)該值將不得不通過值傳遞,但在這種情況下通過(const)引用傳遞。
是否有任何機會一個隱式的時間std ::字符串實例從const char *當引用是常量?如果沒有,那麼這可能如何工作?
編輯
如果函數與
void doSomeStuffWithTheString(const char* value);
哪一個會選擇編譯器超載會發生什麼?
你幾乎回答了你自己的問題:) – pezcode
有趣,不知道。什麼是對象需要這樣做會有這樣的隱式構造函數發生在const-by-ref調用上(以及如何避免它)? – lurscher
程序格式不正確:'std :: string = value;'無效並且應該被你的編譯器拒絕。 –