首页 / 软件开发 / C++ / ATL布幔之下的秘密(2)
ATL布幔之下的秘密(2)2010-11-22李马介绍在本系列的教程中,我要讨论一些ATL的内部工作方式以及它所 使用的技术,这是本系列的第二篇文章。现在让我们来探究一些虚函数 背后更加有趣的资料。为了和上文保持一致,在本文的讨论中我将使用相同的顺 序,程序的序号从20开始。让我们看看下面这个程序:程序 20.#include <iostream>
using namespace std;
class Base {
public:
virtual void fun() {
cout << "Base::fun" << endl;
}
void show() {
fun();
}
};
class Drive : public Base {
public:
virtual void fun() {
cout << "Drive::fun" << endl;
}
};
int main() {
Drive d;
d.show();
return 0;
}
程序的输出为:Drive::fun
这个 程序清楚地示范了基类的函数是如何调用派生类的虚函数的。这一技术被用于不 同的框架中,例如MFC和设计模式(比如Template Design Pattern)。现在你可 以修改一下这个程序来看看它的行为,我将要在基类的构造函数中调用虚函数, 而不是普通的成员函数。