Effective C++ Item 15 在资源管理类中提供对原始资源的访问
来源:互联网 发布:如何购买阿里云空间 编辑:程序博客网 时间:2024/06/06 02:22
本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie
经验:APIs往往要求访问原始资源,所以每一个RAII class应该提供一个“取得其所管理之资源”的办法。
对原始资源的访问可能经由显式转换或隐匿转换。一般而言显式转换比较安全,但隐式转换对客户比较方便。
FontHandle getFont();void releaseFont(FontHandle fh);class Font{public:explicit Font(FontHandle fh):f(fh){}//获得资源~Font(){releaseFont(f);}//释放资源private:FontHandle f;};
示例1:显式转换,如get
class Font{public://…FontHandle get() const {return f;}//显示转换函数//…}
示例2:隐式转换
class Font{public://…operator FontHandle() const //隐式转换函数{ return f; }//…}
#include<iostream>using namespace std; class A{public:A(int vv): v(vv){}int getValue(){return v;}private:int v;};class B{public:B(const A &aa): a(aa){}operator A(){return a;}private:A a;};void display(A a){cout << a.getValue() << endl;}int main(){A a(1);B b(a);display(b);system("pause");}
输出:
1
解析:
display函数对B类型的参数b调用operator A()进行隐式类型转换,然后再通过调用A的copy constructor构造参数a
0 0
- Effective C++ Item 15 在资源管理类中提供对原始资源的访问
- 【Effective c++】条款15:在资源管理类中提供对原始资源的访问
- 《Effective C++》学习笔记条款15 在资源管理类中提供对原始资源的访问
- Effective C++(15) 在资源管理类中提供对原始资源的访问
- 读书笔记《Effective C++》条款15:在资源管理类中提供对原始资源的访问
- C++之在资源管理类中提供对原始资源的访问(15)---《Effective C++》
- Effective C++:条款15:在资源管理类提供对原始资源的访问
- Effective C++ 学记之15 在资源管理类中提供对原始资源的访问
- Item 15:资源管理类需要提供对原始资源的访问 Effective C++笔记
- 读书笔记 effective c++ Item 15 在资源管理类中提供对原生(raw)资源的访问
- 读书笔记 effective c++ Item 15 在资源管理类中提供对原生(raw)资源的访问
- 读书笔记 effective c++ Item 15 在资源管理类中提供对原生(raw)资源的访问
- 读书笔记 effective c++ Item 15 在资源管理类中提供对原生(raw)资源的访问
- 读书笔记 effective c++ Item 15 在资源管理类中提供对原生(raw)资源的访问
- 读书笔记 effective c++ Item 15 在资源管理类中提供对原生(raw)资源的访问
- 读书笔记 effective c++ Item 15 在资源管理类中提供对原生(raw)资源的访问
- 读书笔记 effective c++ Item 15 在资源管理类中提供对原生(raw)资源的访问
- Effective C++ 条款15学习笔记:在资源管理类型中提供对原始资源的访问
- extjs4.0---- treepanel和gridpanel示例
- Twisted网络编程必备(5)
- Printf,fprintf和sprin
- 判断是否为字符串
- 【7】翻转单词顺序
- Effective C++ Item 15 在资源管理类中提供对原始资源的访问
- Python中最快的字典排序方法
- 第十一章 字符串和字符串函数(定义字符串)总结 140524
- web.xml中url-pattern 相关信息
- 从UCI上下载的数据如何转换成libsvm的数据
- Framework7 框架简介
- Python中动态创建类实例
- HDU 4828 (卡特兰数+逆元)
- threading 多线程控制和处理