zoukankan      html  css  js  c++  java
  • 智能指针-共享式shared_ptr

    #include <iostream>
    #include <string>
    #include <vector>
    #include <memory>

    using namespace std;

    class Person
    {
      public:
        string name;
        shared_ptr<Person> mother;
        shared_ptr<Person> father;
        vector<weak_ptr<Person>> kids;

        Person(const string& n,
          shared_ptr<Person> m=nullptr,
          shared_ptr<Person> f = nullptr)
        :name(n),mother(m),father(f){}

        ~Person(){
          cout<<"delete"<<name<<endl;
        }
    };

    shared_ptr<Person> initFamily(const string& name)
    {
      shared_ptr<Person> mom(new Person(name+"'s mom"));
      shared_ptr<Person> dad(new Person(name+"'s dad"));
      shared_ptr<Person> kid(new Person(name,mom,dad));

      mom->kids.push_back(kid);
      dad->kids.push_back(kid);

      return kid;
    }

    int main()
    {
      shared_ptr<Person> p = initFamily("nico");
      cout<<"nico's family exists"<<endl;
      cout<<"- nico is shared"<<p.use_count<<" times"<<endl;
      cout<<"-name of 1st kid of kico's mom:"<<p->mother->kids[0]->name<<endl;

      p->initFamily("jim");
      cout<<"jim's family exists..."<<endl;
      return 0;
    }

  • 相关阅读:
    今日进度
    今日进度
    每周总结
    今日进度
    今日进度
    今日进度
    flask展示Excel
    ubuntu 相关
    python解析xml三种方法【ElementTree】【DOM】【SAX】
    Lambda实现if...elif...else【三元表达式】
  • 原文地址:https://www.cnblogs.com/herd/p/10955340.html
Copyright © 2011-2022 走看看