剛開始做操作符重載,我的老師並沒有深入研究,所以我想知道爲什麼前綴/後綴增量/減量的返回類型不同。當我看到前綴重載時,返回類型被寫爲Type &,但後綴的返回類型被寫爲Type。我做了前綴沒有&和功能都運行正常。返回類型是否影響任何東西,或者它只是另一種區分前綴和後綴的方法?爲什麼前綴增量重載返回類型而不是類型?
0
A
回答
2
的原因是爲了讓鏈接:
++ ++ ++ i;
爲了讓i
三重增量,++
必須返回參考並採取參考。如果它返回一個臨時副本,第二個++
會增加...臨時副本(實際上,臨時副本不會綁定&
,所以它甚至不會編譯)。
1
要添加到Emilio的答案後綴增量創建一個臨時變量,並將其設置爲1加上您希望增加的變量,其中前綴增量增加實際變量,在某些情況下可以提高性能。
0
主要原因是遵循C++中內置類型的語義,其中前綴增量/減量返回左值,後綴1返回右值。詳情可查詢here
相關問題
- 1. 類返回類型重載
- 2. 爲什麼python statistics.mean()返回一個int類型,而不是float
- 3. 重載返回類型?
- 4. 返回類型重載?
- 5. 爲什麼func1的返回類型是Unit,而func2是Int?
- 6. 構造函數返回我無類型而不是類類型
- 7. 爲什麼Class#getComponentType返回null而不是ArrayList(Java)的泛型類型?
- 8. 返回類型的重載運算符[]返回類型
- 9. 爲什麼重載的scala函數需要返回類型?
- 10. 爲什麼自動返回類型改變重載分辨率?
- 11. C++後綴遞增運算符的常量返回類型
- 12. 引用類型的返回函數和後綴增量
- 13. 返回什麼類型?
- 14. fwrite()返回什麼類型?
- 15. 蟒蛇返回類型,而不是
- 16. 爲什麼明顯的類型不匹配會提前返回?
- 17. 可以通過FlexibleInstances「重載」返回不同類型,還是匹配類型類?
- 18. CONFIGRET返回類型是什麼意思?
- 19. 什麼是MembershipUserCollection.GetEnumerator的返回類型();
- 20. 什麼是document.getElementById()的返回類型
- 21. 什麼是返回類型if`聲明
- 22. 什麼是枚舉的返回類型|?
- 23. 什麼是printf的返回類型
- 24. 什麼是'消息返回類型請?
- 25. typeof的返回類型是什麼?
- 26. 什麼是boost :: ptr_vector :: pop_front()返回類型?
- 27. 返回類型應該是什麼?
- 28. 什麼是cookie的返回類型?
- 29. 什麼是協變返回類型?
- 30. 什麼是Http.get()。catch的返回類型?
那不是UB嗎? – Slava
@Slava - 不,用戶定義的操作符包含一個函數調用,它爲表達式添加適當的序列點。對於int變量,這與* i ++ + ++ i *非常不同。 –
事實上,如果內置的鏈接前綴UB帶來了有趣的問題。在這裏問它http://stackoverflow.com/questions/35464793/why-chained-prefix-increment-decrement-for-builtin-type-is-not-ub-for-c – Slava