13.31为你的HasPtr类定义一个<运算符,并定义一个HasPtr的vector为这个vector添加一些元素,并对它执行sort。注意何时会调用swap。

#include<iostream>
#include<string>
#include<new>
#include<vector>
#include<algorithm> using namespace std;
class HasPtr
{
friend void swap(HasPtr&,HasPtr&);
public:
HasPtr(const string &s=string()):ps(new string(s)),i(){cout<<"constructer"<<endl;}
HasPtr(const HasPtr &h):i(h.i)
{
cout<<"copy constructer"<<endl;
ps=new string;
*ps=*h.ps;//只拷贝值
}
HasPtr& operator=(HasPtr h)
{
swap(*this,h);
return *this;
}
bool operator<(const HasPtr &h) const
{
return i<h.i;
}
~HasPtr() { delete ps; cout<<"destructer"<<endl;}
private:
string *ps;
int i;
};
void swap(HasPtr &lhs,HasPtr &rhs)
{
cout<<"swap"<<endl;
using std::swap;
swap(lhs.ps,rhs.ps);
swap(lhs.i,rhs.i);
}
int main()
{
HasPtr h;
HasPtr hh(h);
hh=h;
swap(h,hh);
vector<HasPtr> vec={h,hh};
sort(vec.begin(),vec.end());
return ;
}

最新文章

  1. [LeetCode] Third Maximum Number 第三大的数
  2. TJI读书笔记10-复用类
  3. uva 437,巴比伦塔
  4. C#判断奇偶数的函數
  5. HTTP会话原理解释与应用
  6. hibernate[版本四]知识总结
  7. 怎样向IT行业的朋友说明《圣经》的重要性
  8. iOS开发那些事儿(一)轮播器
  9. 中国科学院信息project研究所 第四研究室实习生/应届生招聘
  10. 【剑指offer】q50:树节点最近的祖先
  11. 在官网下载了最新版的PHP,解压后的安装包里为什么没有php5isapi.dll这个dll文件?
  12. js中盒子模型常用的属性你还记得几个?
  13. (转) Redis学习教程--基本命令
  14. [开源]MasterChief 快速开发辅助类库
  15. Web App Checklist
  16. java学习--构造方法
  17. Luogu P1020 导弹拦截
  18. jQuery添加和删除元素
  19. Guava的SetMultimap
  20. nginx深入使用

热门文章

  1. SQLite入门与分析(八)---存储模型(1)
  2. Ember.js demo4
  3. php 模拟斗地主发牌简单易懂
  4. POJ1699Best Sequence(DFS)
  5. SharePoint 2010 WSP包部署过程中究竟发生什么?
  6. Scheme Implementations对比
  7. POJ 3254 (状态压缩DP)
  8. python调用系统命令 shell命令
  9. ORM Entities vs. Domain Entities under Entity Framework 6.0
  10. 【CSS】Beginner3:Color