0
A
回答
1
形式爲operator typename()
的任何成員函數都是轉換函數。
const wchar_t*
是一個類型名稱,因此operator const wchar_t*()
是一個轉換函數。
1
例如,您要將一個對象投射到wchar_t *
,則會提供此運算符。
例如
MyString a("hello"); // is a string hold ansi strings. but you want change into wide chars.
wchar* w = (wchar_t*)a; // will invoke the operator~
1
它的語言的語法。 C++允許你創建你自己的Operators
例如:
struct A {
bool operator==(const int i);
bool operator==(const char c);
bool operator==(const FOO& f);
}
這允許使用可以方便地比較我們的類型的,看起來語法更好。 A a; if(a == 5) {}
替代方案是實施一個equals(int value)
方法遍佈,看起來像A a; if(a.equals(5)) {}
。
鑄造也是如此。
struct Angle {
float angle;
operator const float() const {return angle;}
}
Angle theta;
float radius = 1.0f;
float x = radius*cos(theta);
float y = radius*sin(theta);
總之,它只是語言的一個很好的功能,使我們的代碼看起來更好,更可讀。
+0
請不要建議人們在C++中使用C風格的演員表 –
+0
我根本不需要演員演員。 C++會爲我做一個隱式投射。 – andre
相關問題
- 1. 我可以在Typescript中編寫一個演員操作符嗎?
- 2. 爲什麼演員操作員不能使用私人基座?
- 3. SFINAE爲演員操作
- 4. 爲什麼我不能在比較中使用演員操作?
- 5. 爲什麼左值演員工作?
- 6. 我是否需要重載一個類的演員操作符?
- 7. 在unique_ptr上有一個演員操作符是否危險?
- 8. 在通用抽象類中實現一個演員操作符
- 9. C演員真的做了什麼?
- 10. 爲什麼cin操作未定義?
- 11. 方案:爲什麼這個結果重新定義預定義的操作符?
- 12. 什麼操作符都可以在C++中的struct中定義?
- 13. C++堆棧/堆棧。爲什麼只有一個新操作員?
- 14. 抽象類演員操作員
- 15. 爲什麼在操作符<exists時定義lt lt?
- 16. 爲什麼不是這個演員工作?
- 17. '+ ='操作符在Javascript中做了什麼?
- 18. '|| ='操作符在ruby中做了什麼?
- 19. 我可以在枚舉中放置一個演員操作符以將其轉換爲其他類型嗎?
- 20. 爲什麼演員決定調用哪個重載方法?
- 21. 爲什麼重載操作符是類的成員只能有一個參數
- 22. 在scalaz中定義的這個@@操作符是什麼?
- 23. 什麼是錯的這個操作符被未定義
- 24. 爲什麼我的演員創造了2次
- 25. 爲什麼演員的國家失去了?
- 26. 爲什麼這是一個無效的LINQ演員?
- 27. 如何定義操作員做什麼在Java類
- 28. 這個功能叫什麼?我可以下載一個演示
- 29. 除了操作員
- 30. 演員枚舉定義爲string
因爲這就是語言定義所說的?請澄清你在問什麼。 –
您可以定義一個名稱爲類型名稱的運算符,因此它是一個演員操作符IMO並不令人感到意外。 –
這聽起來像「雞爲什麼過馬路?」題。你能否澄清你想問什麼? 「爲什麼這個語法被解釋爲轉換運算符?」 「他們爲什麼需要轉換操作員?」其他一些「爲什麼?」 – AnT