C++Primer第五版 12.1.4节练习
来源:互联网 发布:王者荣耀开发语言知乎 编辑:程序博客网 时间:2024/06/01 10:47
练习12.14:编写你自己版本用的shared_ptr管理connection函数。
答:这一节看得云里雾里,也很久没跟新了,所以我把书上的代码复制一遍,算完成题目
struct destination; //表示我们正在连接什么struct connection; //使用连接所需的信息connection connect(destination *); //打开连接void disconnect(connection); //关闭给定的连接void f(destination &d) { // 获得一个连接; 记住使用完后要关闭它 connection c = connection(&d); // 使用连接 // 如果我们在f退出前忘记调用disconnect,就无法关闭c了}void end_connection(connection *p) { disconnect(*p);}void f(destination &d/*其他参数*/){ connection c = connect(&d); shared_ptr<connection> p(&c, end_connection); //使用连接 //当f退出时(即使是由于异常而退出),connection会被正确关闭}
练习12.15:重写第一题的程序,用lambda(参见10.3.2节,第346页)代替end_connection函数。
void end_connection(connection *p) { disconnect(*p);}
改写为lambda(参考网址为 http://blog.csdn.net/eeeduo/article/details/41074851):
connection c = connect(&d); shared_ptr<connection> p(&c, [c](){disconnect(&c);});
0 0
- C++Primer第五版 12.1.4节练习
- C++Primer 第五版 1.1节练习
- C++Primer第五版 1.3节练习
- C++Primer第五版 1.6节练习
- C++Primer第五版 2.4节练习
- C++Primer第五版 3.1节练习
- C++Primer第五版 4.2节练习
- C++Primer第五版 4.3节练习
- C++Primer第五版 4.4节练习
- C++Primer第五版 4.6节练习
- C++Primer第五版 4.7节练习
- C++Primer第五版 4.8节练习
- C++Primer第五版 4.9节练习
- C++Primer第五版 4.5节练习
- C++Primer第五版 5.1节练习
- C++Primer第五版 5.2节练习
- C++Primer第五版 6.1节练习
- C++Primer第五版 6.4节练习
- FTPS VS SFTP
- hadoop、hbase、hive、zookeeper版本对应关系
- Java 获取当前线程的相关信息
- 如何修改Android设备的开机第一阶段Logo
- 集合初探(五)
- C++Primer第五版 12.1.4节练习
- C语言中static变量详解
- 友盟分享单个平台时的调用方法
- Java泛型详解
- replace into的用法
- myEclipse就会报 Errors running builder 'DeploymentBuilder' on project '工程名' xxxNullpointException 的错误
- 如何修改Android设备的开机第二阶段Logo
- 10970Big Chocolate
- android 监听HOME键和开关屏的工具类