拷贝控制示例
来源:互联网 发布:超星阅读器 mac 编辑:程序博客网 时间:2024/05/16 18:57
c++primer 拷贝控制实例邮件信息
#include<iostream>#include<set>class Messages;class Folder{public: Folder(){} void addMsg(Messages *m) { file.insert(m); } void remMsg(Messages *m) { file.erase(m); }private: std::set<Messages*>file;};class Messages{ friend class Folder;public: explicit Messages(const std::string &str=""): contents(str){} Messages(const Messages&); Messages& operator=(const Messages&); ~Messages(); void save(Folder&); void remove(Folder&); void swap(Messages &lhs,Messages &rhs);private: std::string contents; std::set<Folder*>folders; void add_to_Folders(const Messages&); void remove_from_Folders();};void Messages::save(Folder &f){ folders.insert(&f); f.addMsg(this);}void Messages::remove(Folder &f){ folders.erase(&f); f.remMsg(this);}void Messages::add_to_Folders(const Messages &m){ for(auto f:m.folders) f->addMsg(this);}Messages::Messages(const Messages &m): contents(m.contents),folders(m.folders){ add_to_Folders(m);}void Messages::remove_from_Folders(){ for(auto f:folders) f->remMsg(this);}Messages::~Messages(){ remove_from_Folders();}Messages& Messages::operator=(const Messages &rhs){ remove_from_Folders(); contents=rhs.contents; folders=rhs.folders; add_to_Folders(rhs); return *this;}void Messages::swap(Messages &lhs,Messages &rhs){ using std::swap; for(auto f:lhs.folders) f->remMsg(&lhs); for(auto f:rhs.folders) f->remMsg(&rhs); swap(lhs.folders,rhs.folders); swap(lhs.contents,rhs.contents); for(auto f:lhs.folders) f->addMsg(&lhs); for(auto f:rhs.folders) f->addMsg(&rhs);}
0 0
- 拷贝控制示例
- 13.4 拷贝控制示例
- 【足迹C++primer】45、拷贝控制示例
- C++ Primer : 第十三章 : 拷贝控制示例
- 拷贝控制
- 拷贝控制
- 拷贝控制
- 拷贝控制
- 拷贝控制
- 示例1.6 文件拷贝
- NIO拷贝文件示例
- C++ 拷贝控制
- (十三)拷贝控制
- 第十三章 拷贝控制
- 13章拷贝控制
- 拷贝控制与资源管理
- 拷贝控制与资源管理
- C++中的拷贝控制
- 真机测试遇到问题2
- mongoDB的update相关操作
- java 中 解决回车键(\r\n)
- android文件管理器——文件检索
- runtime机制
- 拷贝控制示例
- ActiveMQ学习(一)——MQ的基本概念
- ARM寻址方式
- HDOJ 2020 绝对值排序
- 百宝云Post与Get事件教程
- 高精度
- JSON API免费接口
- BeautifulSoup win+linux 安装配置
- 类模板 stack