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中的容器是深拷贝 平时咱们用的对象对组只是浅拷贝

  • 相关阅读:
    3月16日
    11月8日
    Code4 APP
    为什么alertView弹出后button会消失的问题
    设置某个类使用或者禁用ARC
    Bundle使用&NSBundle
    respondsToSelector
    NSDate获取当前时区的时间
    iOS enum 定义与使用
    IOS开发之纯代码界面--基本控件使用篇 ┊
  • 原文地址:https://www.cnblogs.com/OneDream/p/3072506.html
Copyright © 2011-2022 走看看