首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

vector push_back调用构造函数吗,该怎么解决

2013-04-26 
vector push_back调用构造函数吗class A{public:A(){coutA()endl}~A(){cout~A()endl}public

vector push_back调用构造函数吗
class A
{
public:
    A(){cout<<"A()"<<endl;}
    ~A(){cout<<"~A()"<<endl;}
public:
    int v;
};

int main()
{
    A a;
    vector <A> vec;
    cout<<"HELLO"<<endl;
    vec.push_pack(a);
    return 0;
}

最后发现输出如下:
A()
HELLO
~A()
~A()

我的问题是为啥析构函数调用的次数和构造函数调用的次数不一致呢?我记得C++primer上好像说过vec.push_pack(a)会调用构造函数的
[解决办法]
参考下面的代码:


#include <iostream>
#include <vector>
using namespace std;

class A
 {
 public:
     A()
 {
 cout<<"A()"<<endl;
 }

 A(const A& a)   // 增加拷贝构造函数
 {
 cout << "copy A()" << endl;
 }
     ~A()
 {
 cout<<"~A()"<<endl;
 }
 public:
     int v;
 };
 
int main()
 {
     A a;
     vector<A> vec;
     cout<<"HELLO"<<endl;
     vec.push_back(a);

     return 0;
 }
/*
这样就会输出:
 A()
 HELLO
 copy A()
 ~A()
 ~A()
*/

热点排行