<b>C++箴言:理解隐式接口和编译期多态</b>[VC/C++编程]
本文“<b>C++箴言:理解隐式接口和编译期多态</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
object-oriented programming(面向对象编程)的世界是环绕着 explicit interfaces(显式接口)和 runtime polymorphism(履行期多态)为中央的.比方,给出下面这个(没有什么意义的)的 class(类).
class Widget {
public:
Widget();
virtual ~Widget();
virtual std::size_t size() const;
virtual void normalize();
void swap(Widget& other); // see Item 25
...
};
以及这个(一样没有什么意义)的 function(函数),
void doProcessing(Widget& w)
{
if (w.size() > 10 && w != someNastyWidget) {
Widget temp(w);
temp.normalize();
temp.swap(w);
}
}
我们可以这样评论 doProcessing 中的 w:
·因为 w 被声明为 Widget 范例的引用,w 必须支持 Widget interface(接口).我们可以在源代码中找到这个 interface(接口)(比方,Widget 的 .h 文件)以看清楚它是什么模样的,所以我们称其为一个 explicit interface(显式接口)——它在源代码中显式可见.
·因为 Widget 的一些 member functions(成员函数)是虚拟的,w 对这些函数的调用就表现为 runtime polymorphism(履行期多态):被调用的特定函数在履行期基于 w 的 dynamic type(动态范例)来肯定(拜见《C++箴言:毫不重定义担当的非虚拟函数》).
templates(模板)和 generic programming(泛型编程)的世界是根本差别的.在那个世界,explicit interfaces(显式接口)和 runtime polymorphism(履行期多态)持续存在,但是它们不那么重要了.作为替换,把 implicit interfaces(隐式接口)和 compile-time polymorphism(编译期多态)推到了前面.为了理解这是怎样一种情形,看一下当我们把 doProcessing 从一个 function(函数)转为一个 function template(函数模板)时会发生什么:
以上是“<b>C++箴言:理解隐式接口和编译期多态</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |