22
A
回答
13
這是一個演員。任何定義此類型的類都可以在需要std::string
的任何地方使用。例如,
class Foo {
public:
operator std::string() const { return "I am a foo!"; }
};
...
Foo foo;
std::cout << foo; // Will print "I am a foo!".
演員運營商幾乎總是一個壞主意,因爲總是爲更好的方法來達到同樣的效果。在上述情況下,您最好定義operator<<(std::ostream&, const Foo&)
。
20
它是一個conversion operator,它允許對象顯式或隱式地轉換爲std :: string。當發生這樣的轉換時,調用操作符並且轉換的結果是調用的結果。
作爲隱式轉換的示例,假設您有一個接受類型std::string
或const std::string&
的函數,但不包含給定的對象類型。將對象傳遞給該函數會導致轉換運算符被調用,並將結果傳遞給函數而不是類型。
相關問題
- 1. 「std :: string const」與「const std :: string」
- 2. std :: string + =運算符
- 3. 運算符bool()轉換爲std :: string並與運算符衝突std :: string()
- 4. 沒有運算符==匹配std :: string嗎?
- 5. 重載運算符==爲const std :: reference_wrapper在std :: unordered_map
- 6. GCC 4.9 std :: string const char *
- 7. C++ const std :: string賦值
- 8. 從「std :: istringstream」初始化「const std :: string」
- 9. 爲什麼std :: runtime_error :: what()返回const char *而不是std :: string const&
- 10. 在std :: string :: assign(std :: string const&)中的分段錯誤
- 11. 通過overloading =運算符從std :: string創建字符串對象
- 12. 可以CString :: Format()接收const std :: string?
- 13. 如何在std :: string中存儲const char * []?
- 14. 如何在std :: string中存儲const char *?
- 15. C++,爲什麼使用const std :: string&parameterName?
- 16. C++比較爲const char *到的std :: string
- 17. 無法將'std :: string'轉換爲'const char *
- 18. std :: string與靜態const的char數組
- 19. std :: string gets(char *)而不是(const char *)
- 20. 改變const的參考std :: string參考
- 21. 使用std :: ostream運算符的XOR運算符
- 22. 如何讓MyClass使用std :: string的運算符+
- 23. 錯誤與轉換運算符和的std :: string類中的
- 24. 運算符!=對std :: reverse_iterator不明確C++
- 25. std :: iterator的運算符
- 26. C++傳遞字符串而不是const std :: string&?
- 27. 字符串自動轉換爲const char *到的std :: string
- 28. 哪一個使用const char []或const std :: string?
- 29. 從const char * +長度構造一個const std :: string便宜嗎?
- 30. 可變模板匹配const和非const的模板std :: string
我反對術語「永遠」,它太絕對了。我認爲「通常」會是一個更好的術語。 – 2010-06-15 13:26:57
馬丁,我沒有說「永遠」。我幾乎總是說「這不是絕對的」,而且IMO比「通常」更接近真相。 – 2010-06-16 01:48:16
Loki,你自己的評論太絕對了。應該總是避免使用術語「總是」,還是應該避免使用術語「總是」? – Alyoshak 2012-07-25 01:18:31