C++增加運算符
回答
這些運算符是一元運算符,即它們不採用右側參數。
至於你的問題,如果你真的必須超載這些運營商,爲preincrement使用簽名const T& operator ++()
,併爲後增量,const T& operator(int)
。 int參數是一個虛擬的。
它們可以是非成員函數。 – 2010-05-05 23:16:20
@gf真。但那不會是我增量運營商的首選。 (無論如何,我的第一選擇是不重載運算符。) – 2010-05-05 23:19:49
@Daniel:如果你想編寫一個C++的ish迭代器或類似迭代器的對象,你別無選擇。 – 2010-05-06 00:09:30
對於後綴++和 - 操作符,函數必須採用虛擬int
參數。如果它沒有參數,則它是前綴運算符
將後綴增量i++
想象爲具有第二個(缺失)參數(即i++x
)。所以後綴增量簽名有一個右手參數,而前綴增量沒有。
對於非成員的版本,其中一個參數的函數是前綴,而具有兩個參數,第二個是int
一個功能是後綴:
struct X {};
X& operator++(X&); // prefix
X operator++(X&, int); // postfix
對於構件的版本,零參數版本是前綴和一個參數的版本以int
爲後綴:
struct X {
X& operator++(); // prefix
X operator++(int); // postfix
};
的int
參數後綴運營商的通話將具有零值。
@gf添加一個示例,這將是最佳答案 – 2010-05-05 23:52:56
@Caspin:好點,完成。 – 2010-05-05 23:58:51
- 1. 在條件運算符中增加運算符c
- 2. C增量運算符
- 3. C++遞增運算符
- 4. 預增加運算符
- 5. 增量運算符
- 6. C#++一元運算符增量問題
- 7. C++重載增量運算符
- 8. C++/g ++過載增量運算符
- 9. 運作遞增運算符
- 10. 對多個值增加運算符
- 11. C++加法運算符
- 12. 爲什麼預增加運算符在C中給出右值?
- 13. 使用C++中的運算符重載的複數的增加
- 14. 後增量運算用C
- 15. 後增量運算符++
- 16. 增量運算符java
- 17. C++運算符 ''
- 18. 運算符[] [] C++
- 19. JavaScript增量運算符不會增加1
- 20. C++:運算符重載,運算符+
- 21. 使用Objective-C點運算符混合C前/後增加/減少工作?
- 22. C++ typeid運算符
- 23. C#Lambda運算符
- 24. C#coalesce運算符
- 25. C++ overload []運算符
- 26. 運算符[&]在C++
- 27. 點運算符C++
- 28. C++ typeof運算符
- 29. 運算符()在C++
- 30. XOR運算符C++
你的C++教科書對這個主題有什麼要說的? – 2010-05-05 23:10:24