0
A
回答
1
至少有三個:
vector<Cat> v;
Cat c; // default construction
v.push_back(c); // copy construction of v[0] from c
Cat d = v[0]; // copy construction of d from v[0]
編輯:請注意,我只算Cat
對象在這裏,因爲它沒有任何意義要問多少個對象總創建,因爲那將是實現具體(如何std::vector
實現的是什麼Cat
辦......?)
1
一些記錄添加到貓的構造和測試它自己:
class Cat
{
Cat()
{
std::cout<<"Constructing a Cat"<<std::endl;
}
Cat(const Cat & cat)
{
std::cout<<"Copy Constructing a Cat"<<std::endl;
}
};
這裏就是我得到:http://codepad.org/Pzs9kOlH
需要注意的是在一定條件下的編譯器就可以去除什麼也不做的代碼塊。所以一些副本可能會被刪除。用假想的非常積極的編譯器,它可能會注意到你的代碼沒有做任何事情,並完全剝離了任何這樣的構造。由於我的構造函數現在改變了輸出,編譯器不那麼自由地去除對它們的調用。
相關問題
- 1. 在C++中創建對象
- 2. 在c文件中創建C++對象
- 3. 創建在C#類對象
- 4. 創建C++對象
- 5. C++:創建對象
- 6. C# - 對象創建
- 7. 創建對對象C++
- 8. 在C++中動態創建對象?
- 9. 在C++中創建一個iostream對象
- 10. C++在方法中創建新對象
- 11. 如何在C#中創建對象?
- 12. 在C#中創建IStream對象
- 13. 在C#中創建靈活的對象
- 14. 在C#中創建代理對象#
- 15. 一般在C中創建對象#
- 16. 在C#中按需創建對象#
- 17. 在javascript中創建C#對象
- 18. 在C++中創建類對象
- 19. 在C++中創建類對象
- 20. 在C++中創建istream和ostream對象
- 21. 如何在C中創建對象#
- 22. 在C++中創建對象指針
- 23. 如何在C++中創建Cocoa對象?
- 24. C#從ExcelFile對象創建ExcelFile對象
- 25. 新對象創建C#
- 26. C#對象創建者
- 27. C++/CLI - 創建對象
- 28. 創建對象C陣列
- 29. 從C++創建COM對象?
- 30. 用C#對象創建JSON
這是功課嗎? – 2012-01-09 04:10:06
你對對象的總數量感興趣嗎,或者只是'Cat'對象的數量?例如,你想計算'v'作爲一個對象,還是隻計算*'v'中的'Cat'對象? – 2012-01-09 04:12:38
這是不可能說的。 Cat的默認構造函數是做什麼的?它是否構建其他對象?它可以拋出異常嗎?它可以調用'std :: exit()'嗎?那麼'Cat'拷貝構造函數呢?它有什麼作用?如何使用'std :: vector'的實現?它嘗試的任何分配可能會失敗嗎?還需要計算子對象嗎? – 2012-01-09 04:13:10