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