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++:创建对象
- 3. 创建C++对象
- 4. 创建对对象C++
- 5. 在C++中创建类对象
- 6. 如何在C++中创建Cocoa对象?
- 7. 一般在C中创建对象#
- 8. 如何在C中创建对象#
- 9. 如何在C#中创建对象?
- 10. 在C#中创建灵活的对象
- 11. 在C#中按需创建对象#
- 12. 在C++中创建类对象
- 13. 在C#中创建一个geoJson对象
- 14. 在C#中创建代理对象#
- 15. 在C++中动态创建对象?
- 16. C++/CLI - 创建对象
- 17. 创建类对象objective c
- 18. 关于C++对象创建
- 19. c#循环对象创建
- 20. 从QML创建C++对象
- 21. 动态创建C#对象
- 22. 问题创建对象C++
- 23. C++异步创建对象
- 24. C#对象创建者
- 25. 从C++创建COM对象?
- 26. 对象创建2010 C++
- 27. 创建对象列表C#
- 28. 在Hy中创建对象
- 29. 在RaphaelJS中创建对象
- 30. 在GenericObjectPool中创建对象
这是功课吗? – 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