隐式接口

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!=.

以上是关于隐式接口的主要内容,如果未能解决你的问题,请参考以下文章

从父片段到选项卡片段的接口侦听器不起作用

接口 代码分析

来自 JetpackNavigation 库中通知的隐式深层链接

与另一个片段通信的片段接口

C#接口的隐式和显式实现

java 代码片段