隐式接口
Posted xiongxinxzy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了隐式接口相关的知识,希望对你有一定的参考价值。
例程:
1 template<typename T> 2 void doprocessing(T& w){ 3 if (w.size() > 10 && w != someNastyWidget){ 4 ... 5 } 6 }
T必须支持size成员函数,当然这个成员函数也可能是从base class那里继承而来。这个成员函数不需要返回一个整数值,甚至不需要返回一个数值类型,它甚至不需要返回一个定义有operator>的类型。
这个operator>不需要非取得一个类型为X的参数不了,因为他可能取得类型为Y的参数,只需要存在一个隐式转换能够将类型X的对象转换为类型Y的对象。
同理,T并不需要支持operator!=,因为像这样也是可以的:
operator !=接收一个类型为X的对象和一个类型为Y的对象,T可被转换为X而someNastyWidget可被转换为Y,这样就可以有效的调用operator!=.
以上是关于隐式接口的主要内容,如果未能解决你的问题,请参考以下文章