【发布时间】:2018-08-22 07:13:58
【问题描述】:
我正在阅读 Effective C++,Item 41,标题为“Understanding implicit interfaces and compile-time polymorphism”,它给出了这个例子和接下来的解释,但我不明白这部分。
template<typename T>
void doProcessing(T& w)
{
if (w.size() > 10 && w != someNastyWidget) {
...
...,T 必须支持一个 size 成员函数,......,但是这个成员函数不需要返回一个整数类型。它甚至不需要返回数字类型。就此而言,它甚至不需要返回定义了运算符
>的类型!它需要做的就是返回一个 x 类型的对象,这样就有一个操作符>可以用 x 类型的对象和一个 int 来调用...
您能否解释一下它的含义并提供更多示例?
【问题讨论】:
-
哪部分解释不清楚?
-
这被称为duck typing。
w.size()不需要是任何东西,只是w.size() > 10需要转换为bool。 -
@UnholySheep 从“那件事,...”到结尾是很模糊的。
-
我想作者只是想强调,虽然当我们看到
size()时我们有一定的期望(例如,我们假设它返回一个整数类型),但真正需要的是@987654329 @ 是这样的,这一行编译没有错误
标签: c++ effective-c++