模板用于解耦
来源:互联网 发布:产品经理数据分析工具 编辑:程序博客网 时间:2024/04/30 22:16
陈硕的题和解决方法:
一道 C++ 思考题:std::string 的 operator << 和 operator >> 是如何声明的,如何避免与 iostream 的过度耦合?iostream 和 string 都可以单独 include 来使用,显然 iostream 头文件里不会定义 string 的 << 和 >> 操作。那么 string 头文件里会不会为了定义 << 和 >> 而 include iostream 呢?
C++ 对此有一个解决办法,写一个 non-member non-friend 且与 class 位于同一 namespace 的 templated operator <<,并且把操作转发给 class member function 'writeTo',后者可能本身是个 template,这样可以避免耦合到 iostream。
泛型编程原意是用通用的代码应用不同类型,这里是铁定只有一种类型的情况下用于解耦。<<算是应用于两个运算元的操作符,一个是string,一个iostream。你在使用string的时候不一定用到iostream,使用iostream的时候不一定用到string,又要求必须支持iostream对string的<<操作。这时候自然要解耦了,这里模板只是为了解耦,不是为了泛型算法,因为需要支持iostream而不是多种类型。
另外,c++中某个函数内通过一个接口,必须要接受实现这个接口的类作为参数;或者有些是访问变量,这个类必须声明了这个变量。
int a(const A* pa){ pa->b();}而动态语言,比如as、lua,不会做严格类型检查,不需要事先声明,只要运行时接收的object有这个属性就可以了。
c++中可以通过模板实现这种要求。
- 模板用于解耦
- 模板用于解耦
- 观察者模式用于解耦
- python 生成项目模板 用于打包
- symbian中的模板函数用于得到AppUi/Document/Application
- 一个转换输出函数.可以用于模板转换
- symbian中的模板函数用于得到AppUi/Document/Application
- 用于datagrid模板针对不同的数据类型的参数归总
- mediawiki中,SkinTemplate->template用于设置模板类名称
- 模板特化用于协议解析的一种用法
- 用于自定义数据/结构体的剪切板应用模板类
- 用于
- 均值不等式用于解方程
- 【Web】<script type="text/template"></script>适合用于定义模板(模板容器),不解析(渲染/执行)
- 在 Visual Studio .NET 对话框中添加用于企业模板项目的自定义文件夹
- 设计一个模板类Sample,用于对一个有序数组采用二分法查找元素下标
- mygeneration中自己做的winform模板,用于eco的输入,access数据源
- 线段树染色模板,用于颜色较少的情况。 POJ 2777
- 一直迷糊的Div+css总结
- 用vbscript来添加ip策略 自动封IP!
- 用变换的思维写程序
- 构造函数
- 我的简历
- 模板用于解耦
- 一句话asp木马加密版 彻底突破杀毒软件
- 关于数组的&a[0]和&a及指针访问的问题
- centos 6.0 I like it~
- 将MYSQL读写权限转化为system权限
- 硬件负载均衡设备介绍
- 图片服务器的url hash架构
- 搜索引擎中的URL散列
- 到底什么是hash?它起什么作用?