以下是带有输出的代码段。
#include<iostream>
#include<vector>
using namespace std;
class VectDemo
{
public:
VectDemo()
{
cout<<"Contructor"<<endl;
}
~VectDemo()
{
cout<<"Destructor"<<endl;
}
};
int main()
{
vector<VectDemo> VectOfObj;
cout<<"Size = "<<VectOfObj.size()<<endl;
for(int i= 0;i<2;i++)
{
VectOfObj.push_back(VectDemo());
}
cout<<"Size = "<<VectOfObj.size()<<endl;
cout<<"Capacity = "<<VectOfObj.capacity()<<endl;
return 0;
}
输出:大小= 0
建设者
析构函数
建设者
析构函数
析构函数
大小= 2
容量= 2
析构函数
析构函数
您的构造函数和析构函数日志消息不平衡,因为VectDemo
未记录其副本构造函数被调用。 VectOfObj.push_back(VectDemo())
创建一个临时VectDemo
对象,然后必须将其复制到向量中。同样,当向量的capacity
增大时,将复制向量的元素。构建副本时,只有在销毁副本时才记录日志。