我编写了一个简单的矢量程序,在该程序中,我得到了以下输出。您能帮我理解它的输出吗?

问题描述 投票:0回答:1

以下是带有输出的代码段。

#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

析构函数

析构函数

c++ stl
1个回答
2
投票

您的构造函数和析构函数日志消息不平衡,因为VectDemo未记录其副本构造函数被调用。 VectOfObj.push_back(VectDemo())创建一个临时VectDemo对象,然后必须将其复制到向量中。同样,当向量的capacity增大时,将复制向量的元素。构建副本时,只有在销毁副本时才记录日志。

© www.soinside.com 2019 - 2024. All rights reserved.