您的位置:首页 > 其它

虚函数背后的秘密

2012-07-19 17:52 169 查看
#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();

d.fun();

return 0;

}

Drive::fun

Drive::fun

这个程序清楚地示范了基类的函数是如何调用派生类的虚函数的。这一技术被用于不同的框架中,例如MFC和设计模式(比如Template Design Pattern)。现在你可以修改一下这个程序来看看它的行为,我将要在基类的构造函数中调用虚函数,而不是普通的成员函数。

#include <iostream>

using namespace std;

class Base

{

public:

Base()

{

fun();

}

virtual void fun()

{

cout << "Base::fun" << endl;

}

};

class Drive: public Base

{

public:

virtual void fun()

{

cout << "Drive::fun" << endl;

}

};

int main()

{

Drive d;

d.fun();

return 0;

}

Base::fun

Drive::fun

这个程序表明,我们不能在基类的构造函数中调用派生类的虚函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: