码迷,mamicode.com
首页 > 其他好文 > 详细

STL中list中push_back(对象)保存对象的内部实现

时间:2015-12-17 18:57:28      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:

STL中list中push_back(对象)保存对象的内部实现

1. 在容器中,存放的是对象拷贝

  

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

class A{
    int i;
    static int num;
public:
    A():i(0){ cout<<"A()" <<endl; num ++;}
    A(int ii):i(ii){ cout<<"A(int)" <<endl; num ++;}
    ~A(){ cout<< "~A" <<endl;}
    A(const A& a){
        i = a.i;
        cout<<"A(const A&)"<<endl;
        num ++;
    }
    A& operator =(const A& a){
        cout<<"operator="<<endl;
        i = a.i;
        return *this;

    }
    void print(){
        cout<<i<<endl;
    }
    void printN(){
        cout<< " num = "<<num<<endl;
    }
};

int A::num = 0;

int main(){
    //A a(1);
    //A b = a;
    //A c;
    //c = a;
    //c.print();
    //a.printN();
    list<A> li;
    li.push_back(A(2));
    list<A>::iterator it = li.begin();
    (*it).printN();
}

输出结果:
A(int)//A2临时对象
A(
const A&)//li.push_back(A(2))调用其复制构造函数 ~A//离开临时对象作用域A调用其析构函数 num = 2 ~A //程序结束 从输出结果可以看出传到list中的是对象的拷贝。

 

STL中list中push_back(对象)保存对象的内部实现

标签:

原文地址:http://www.cnblogs.com/icmzn/p/5054842.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!