我發現一個帶單個參數的構造函數稱爲轉換構造函數(C++ 03)。但這是否意味着特定的構造函數將隱式創建一個臨時對象,並將其分配給所需的對象(這對我們是不可見的)然後寫什麼不同 EgClass m = EgClass(1) and EgClass m = 1 EgClass(1)類型轉換爲EgClass嗎?(如果是這樣怎麼做? ?) 當我們寫EgClass m(1)時會發生什麼?如何轉換構造函數實際工作
0
A
回答
0
但這是否意味着特定的構造函數將隱式創建一個臨時對象,並將其分配給所需的對象?
是的,但只是在形式上 - 在許多情況下,即使在優化關閉的情況下構建時,也會優化這些臨時對象。這意味着在構造函數中添加的任何日誌記錄都不會指示已創建此臨時文件。
那麼,什麼是書面的差異將EgClass M =將EgClass(1),將EgClass M = 1是否將EgClass(1)類型轉換的int將EgClass?(如果是的話怎麼會這樣呢?)
EgClass m=EgClass(1)
它一樣EgClass m=1
,你才能成像,當編譯器看到EgClass m=1
將它轉換爲EgClass m=EgClass(1)
再到EgClass m(EgClass(1))
是否將EgClass(1)類型轉換的int將EgClass?(如果是如何發生的呢?)
是的,1被轉換爲EgClass。這發生在臨時 - 但是再一次,形式上是暫時的,但是編譯器可以優化它。當我們寫將EgClass米(1)
整數1被轉換成類型將EgClass的對象
而且會發生什麼。沒有臨時創建,甚至正式。
相關問題
- 1. 構造函數轉換如何在C++中工作?
- 2. 積累函數如何實際工作?
- 3. 轉換C數組文字在C++構造函數中工作?
- 4. const構造函數如何工作?
- 5. 但構造函數如何工作?
- 6. __attribute __((構造函數))如何工作?
- 7. 構造函數不工作
- 8. 構造函數不工作
- 9. 構造函數和析構函數是如何工作的?
- 10. 從另一個構造函數調用構造函數的實際場景
- 11. 如何避免轉換函數中的複製構造函數?
- 12. 參數化和轉換構造函數
- 13. 箭頭函數如何在構造函數中工作?
- 14. 將構造函數轉換爲方法
- 15. 構造函數和類轉換
- 16. C++顯式轉換構造函數
- 17. 預期的構造函數,析構函數或類型轉換
- 18. 需要構造函數/析構函數/類型轉換錯誤
- 19. 如何實現構造函數?
- 20. 默認構造函數的參數如何轉換爲字段?
- 21. JPA如何實際工作?
- 22. ReadAsMultipartAsync如何實際工作?
- 23. CompilationRelaxations.NoStringInterning如何實際工作?
- 24. volatile如何實際工作?
- 25. arguments.callee如何實際工作?
- 26. FBConnect如何實際工作?
- 27. UpdatePanel如何實際工作?
- 28. 轉換構造函數,基類作爲參數?
- 29. 隱式使用轉換構造函數需要複製構造函數
- 30. scala 2.10 - Stringbuilder構造函數不工作
'X x = 1'和'X x = X(1);'是一樣的,它們創建一個可以優化出來的臨時對象。 'X x(1);'不是臨時的。 –