初始化向量<Temp> myVector(10);
Initialize vector<Temp> myVector(10);
根据Absolute c++书籍:
vector<AClass> records(20); // vector consctructer uses the // default constructor for AClass to initialize 20 elements.
温度h
#ifndef TEMP_H
#define TEMP_H
class Temp {
public:
Temp();
static int b;
};
#endif /* TEMP_H */
临时.cpp
#include <iostream>
#include "temp.h"
using namespace std;
int Temp::b=9; // static value for control
Temp::Temp(){
cout<<"Initialize";
++b;
}
main.cpp
#include <iostream>
#include <vector>
#include "temp.h"
using namespace std;
int main(int argc, char** argv) {
vector<Temp> a(10); // 10 elements
cout<<Temp::b;
return 0;
}
我的结果是:Initialize10;
正如你所看到的,constructor只调用了一次。为什么会这样?我很困惑。
vector
构造函数在C++03和C++11(及更高版本)中的行为不同。
在C++03中,它插入默认构造的Temp
对象的10个副本:默认构造函数被调用一次,副本构造函数(您没有插入)被调用10次。
在C++11中,它插入了10个默认构造的Temp
对象。
相关文章:
- 在 myVector 类中重载运算符 + 时出错
- 节点 *temp; 和节点 *tmp = 新节点之间的差异
- [temp.variadic]中关于包扩展实例化的措辞
- 使用未声明的标识符'temp'
- 将内容从第一个文件("constituencies")移动到第二个文件("temp")并在之后重命名时,我的文件被删除
- 引发异常:写访问冲突. temp 为 nullptr
- 使用显式模板参数列表和 [temp.arg.explicit]/3 的函数调用的演绎失败
- 链表指针赋值为什么我们不能直接将尾巴分配给 temp 而不是尾巴>尾巴下一个
- 在 C++ 中使用 temp 变量将节点添加到链表的末尾
- AppData\Local\Temp\cc59LXDc.o:test1.cpp: undefined reference to 'constructNewObjectOfClass
- 为什么我们要检查 temp == 是否为空?
- 'temp'未声明,请先使用此函数
- 如果 (QString.contains()) 不能正常工作,请使用 temp bool 变量进行更正
- IS是[temp.res]/p8覆盖的[temp.dep.type]/p7
- 在 MyVector 中实现写入时复制习语
- 在 temp.deduct.partial 中,为什么参数包的专用性较低?
- 为什么我不能通过执行 "myVector[i].data()" 来实例化一个类,其中 myVector[i].data() 是一个字符串?
- 如何使用 for(int i:myVector) 代码样式知道元素是否是矢量中的最后一个元素
- 给定 myvector.start() 和 myvector.end(),我想在不复制数据的情况下创建 myvector
- 初始化向量<Temp> myVector(10);