码迷,mamicode.com
首页 > 其他好文 > 详细

隐式接口

时间:2020-06-11 13:45:00      阅读:58      评论:0      收藏:0      [点我收藏+]

标签:支持   必须   定义   amp   base   opera   proc   col   参数   

例程:

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

隐式接口

标签:支持   必须   定义   amp   base   opera   proc   col   参数   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!