zoukankan      html  css  js  c++  java
  • 关于STL中容器的发现

    在写程序的时候用了Vector容器,它是属于某一个类的成员变量,在成员函数中加入其他类的对象的时候,神奇的发现加入的变量不会在其生命周期不会被析构

    如下面的一些简单的小例子

    class AAA
    {
    public:
    AAA();
    virtual ~AAA();
    void SetData(int m);
    public:
    int m;

    };


    AAA::AAA()
    {

    }

    AAA::~AAA()
    {

    }


    void AAA::SetData(int m)
    {
    this->m=m;
    }

    class DD
    {
    public:
    DD();
    virtual ~DD();
    void AddMember();
    void PrintAddress();
    public:
    vector<AAA > v;

    };


    DD::DD()
    {

    }

    DD::~DD()
    {

    }

    void DD::AddMember()
    {
    //我们的对象
    AAA data;
    data.SetData(1);
    cout<<"local data address is "<<&data<<endl;
    //对象插入到vector后面
    v.push_back(data);
    }
    void DD::PrintAddress()
    {
    vector<AAA>::iterator it;
    for (it=v.begin();it!=v.end();it++)
    cout<<"vector data address is "<<&(*it)<<endl;
    }

    int main()
    {

    DD d;
    d.AddMember();
    d.PrintAddress();

    return 0;
    }

    运行结果:

     

    看文中实验的结果你回去发现原来STL中的容器是深拷贝 平时咱们用的对象对组只是浅拷贝

  • 相关阅读:
    Quartz 配置
    8-6 泛型
    8-6 泛型
    HttpUrlConnect post提交
    正则表达式的简单运用
    bat ren命令修改文件后缀名
    集合的有序和重复
    一定要为HttpUrlConnection设置connectTimeout属性以防止连接被阻塞
    List toArray() toArray(T[] a)
    CSS选择器
  • 原文地址:https://www.cnblogs.com/OneDream/p/3072506.html
Copyright © 2011-2022 走看看