首页 > 其他 > 详细

隐式接口

时间:2020-06-11 13:31:25      阅读:39      评论:0      收藏:0      [点我收藏+]

例程:

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

隐式接口

原文:https://www.cnblogs.com/xiongxinxzy/p/13092523.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!