C++沉思录读书笔记(30章)- 一个IO库的两种设计
来源:互联网 发布:淘宝上拍卖的车被骗了 编辑:程序博客网 时间:2024/05/04 08:08
假设需要对自定义的String类进行各种类型的IO
比较:设计二在编译的时候就已知的IO包对象,设计一需要在运行时确定IO包对象,也就是说,设计二可以在编译时就确定好调用那个IO对象的send函数,而设计一需要在运行时才确定调用那个IO类的send成员函数,因此设计二的效率更高
设计一,使用继承进行抽象,代码如下
class Write{public:virtual ~Write();virtual void send(const char*, int) = 0;};Write& operator<<(Write& w, const String& s){for(int i = 0; i< s.size(); i++){char c = s[i];w.send(&c, 1);}return w;};class FileWrite: public Write{//定义自己的成员,构造函数,析构函数//定义自己的send操作};//使用示范FileWrite s = ...String hello = "Hello";s << hello;
template<class W>W& operator<<(W& w, const String& s){for(int i = 0; i< s.size(); i++){char c = s[i];send(w, &c, 1);}return w;};//对每个对String应用于其上的对象定义不同的send函数,下面是一个文件指针的例子void send(File*f, const char *p, int n){for(int i=0; i<n; i++)putc(*p++, f);}
比较:设计二在编译的时候就已知的IO包对象,设计一需要在运行时确定IO包对象,也就是说,设计二可以在编译时就确定好调用那个IO对象的send函数,而设计一需要在运行时才确定调用那个IO类的send成员函数,因此设计二的效率更高
- C++沉思录读书笔记(30章)- 一个IO库的两种设计
- C++沉思录读书笔记(23,24章)- 设计一个针对C接口的C++包装类
- C++沉思录读书笔记(25,26章)- 库设计与语言设计
- C++沉思录读书笔记(27章)- 设计自己跟踪自己的类
- C++沉思录读书笔记(12章)-一个简单容器类的实现
- 【读书笔记】设计模式沉思录
- C++沉思录读书笔记(18章)- 确定一个泛型算法能支持的数据结构的方法
- C++沉思录读书笔记(8章)-一个面向对象程序范例1
- C++沉思录读书笔记(8章)-一个面向对象程序范例2
- C++沉思录读书笔记(1-3章)
- C++沉思录读书笔记(5章)-代理类
- C++沉思录读书笔记(6章)-句柄:第一部分
- C++沉思录读书笔记(7章)-句柄:第二部分
- C++沉思录读书笔记(9,10章)-感想
- C++沉思录读书笔记(7章)-句柄:第二部分
- C++沉思录读书笔记(13、14章)-简单容器类的改进
- C++沉思录读书笔记(17章)-见识泛型算法的威力
- C++沉思录读书笔记(19章)- 使用泛型迭代器将泛型算法应用到不同的场合
- Exceptional C++ 目录
- [Android实例] 获得OAuth认证
- 关于Linux静态库和动态库的分析
- 函数指针的几种用法
- Spring配置文件详解
- C++沉思录读书笔记(30章)- 一个IO库的两种设计
- WinCVS的使用
- Linux shell实现 四则运算(整数及浮点) 简单方法
- oracle 中插入date类型字段
- IT人士更应该学习《黄帝内经》
- 纪念一下:CSDN博客排名进入1000了
- Linux内核学习之中断(3)-tasklet
- 智能小车循迹避障程序
- ORACLE insert into 报错 invalid identifier