zoukankan      html  css  js  c++  java
  • 第十三章拷贝控制

    习题

    #include <iostream>
    #include <string>
    #include <set>
    
    class Message
    {
        friend class Folder;
    public:
        explicit Message(const std:: &str = "") : 
            contents(str) { }
        Message(const Message &);
        Message& operator=(const Message&);
        ~Message();
    
        void save(Folder &);
        void remove(Folder &);
    
    private:
        std::string contents;
        std::set<Folder*> folders;
        void add_to_folders(const Message&);
        void remove_from_Folders();
    
    };
    
    class Folder
    {
        friend void swap(Folder &, Folder &);
        friend class Message;
    public:
        Folder() = default;
        Folder(const Folder &);
        Folder& operator=(const Folder &);
        ~Folder();
    
        void print_debug();
    
    private:
        std::set<Message*> msgs;
    
        void add_to_Message(const Folder&);
        void remove_from_Message();
    
        void addMsg(Message *m) { msgs.insert(m); }
        void remMsg(Message *m) { msgs.erase(m); }
    };
    
    void Message::save(Folder &f)
    {
        folders.insert(&f);
        f.addMsg(this);
    }
    
    void Message::remove(Folder &f)
    {
        folders.erase(&f);
        f.remMsg(this);
    }
    
    void Message::add_to_Folders(const Message &m)
    {
        for (auto f : m.folders)
            f->addMsg(this);
    }
    
    void Message::remove_from_Folders()
    {
        for (auto f : folders)
            f->remMsg(this);
    }
    
    Message::~Message()
    (
        remove_from_Folders();
    )
    
    Message& Message::operator=(const Message &rhs)
    {
        remove_from_Folders();
        contents = rhs.contents;
        folders = rhs.folders;
        add_to_Folders(rhs);
        return 8this;
    
    }
  • 相关阅读:
    FileZilla相关配置说明
    pod install速度慢,pod repo update 速度慢解决方法
    Vue安装
    mac 远程桌面连接
    .NET MVC 支付宝支付(即时到账)
    windows下生成ssl
    gentelella 开源后台使用记录
    node、npm、gulp安装
    武汉在院新冠肺炎患者清零
    致最可爱的战疫人
  • 原文地址:https://www.cnblogs.com/11ys/p/14869858.html
Copyright © 2011-2022 走看看