C++中调用模板参数对象成员函数的特性正式名称是什么?
该C++模板特性的正式名称
你描述的这种模式,正式名称是鸭子类型(Duck Typing),在C++的模板语境下,它也常被称为隐式接口(Implicit Interface)。
对应的代码示例:
template<typename T> void call_foo_on_t(T t) { t.foo(); }
核心说明
- 鸭子类型的核心逻辑是:“如果一个类型的行为符合要求(比如这里能调用
foo()),那它就可以被使用,不需要显式继承某个基类或实现特定接口”。 - 它和C++中基于继承、虚函数的显式接口形成对比:显式接口要求类型必须继承指定基类并实现对应的虚函数,而隐式接口仅依赖类型支持所需的操作。
- 这种模式是C++标准库(比如STL)的核心设计思路之一,例如STL的迭代器不需要继承统一基类,只要支持
++、*等操作的类型都能作为迭代器使用。
内容的提问来源于stack exchange,提问作者maltebp
相关产品推荐
相关产品推荐

