創建類的對象的最常用方法是使用new
關鍵字。它也調用構造函數。 但是,如果我們使用malloc
函數來創建對象,構造函數不會被調用。使用malloc
創建對象後是否仍可以手動調用構造函數?是否可以手動調用C++中的類的構造函數?
回答
這聽起來像你想調用構造函數一個由malloc
創建的一塊內存。這是可能的,被稱爲放置新
void* pMemory = malloc(sizeof(C));
C* pValue = new (pMemory) C();
爲什麼要將C功能與C++混合?用這樣的東西分配是不是更好:'void * pMemory = new char [sizeof(C)]' – SomeWittyUsername
_Technically_只能間接調用構造函數。值得一提的是 –
@icepack:那會更好些?對我來說看起來有點奇怪。在這種情況下'malloc'完全符合要求,並且爲它分配內存。當你想要一個字符數組時,你可以使用'new char []',在這種情況下不需要。 –
您不能直接調用構造函數,你會一些其他的功能,因爲構造函數沒有名稱。
什麼是你可以使用的位置新,這將調用你的構造函數提供的內存提供新的位置。
- 1. 是否可以通過make()來調用結構構造函數?
- 2. SpiderMonkey:手動調用構造函數
- 3. 手動對象構造函數調用
- 4. 構造函數可以在C++中調用另一個構造函數嗎?
- 5. 是否有可能在構造函數中調用函數? PHP
- 6. 在構造函數中調用類成員的構造函數
- 7. 在構造函數中調用不同類的構造函數?
- 8. 是否可以模擬僅暴露Factory構造函數的類?
- 9. 是否會自動調用基類構造函數?
- 10. C++;是否有可能在子構造函數的中間調用父構造函數?
- 11. Move構造函數調用基類移動構造函數
- 12. 構造函數可以在C++中調用另一個類的構造函數嗎?
- 13. 是否可以從基類構造函數創建派生類?
- 14. 如果子類不定義構造函數,是否調用父構造函數?
- 15. 是否可以從方法中的字符串參數調用構造函數?
- 16. 匿名類的構造函數調用可以有參數
- 17. 是否可以引用Scala案例類構造函數參數的類型?
- 18. C++:可以調用任何構造函數的通用工廠?
- 19. 是否可以使用動態代理攔截構造函數調用?
- 20. 可以在類的構造函數中使用「new」來調用Java中的另一個構造函數嗎?
- 21. 在C++中調用的構造函數
- 22. 我可以在C#中調用同一類的重載構造函數嗎?
- 23. C#調用構造函數
- 24. C++自動構造函數調用
- 25. 從子類構造函數調用超級構造函數是否在內存中創建超類的對象?
- 26. 我們可以調用一個類的構造函數嗎?
- 27. 從不同類的構造函數調用構造函數
- 28. 類可以使用默認的構造函數/析構函數嗎? C++
- 29. JS對象的構造函數是否可以用SpiderMonkey在C++中編寫?
- 30. PHP [OOP] - 如何手動調用類構造函數?
那麼,你可以使用新的位置。但是,不確定你具體是什麼,因爲它基本上只是重新實現'new'。 – chris
是的,它被稱爲[放置新](https://stackoverflow.com/questions/222557/what-uses-are-there-for-placement-new) – David
我會想象在堆棧上創建對象比創建他們動態。 – jliv902