我们都知道虚函数的使用要点:
1.在基类方法的声明中使用关键字virtual可使该方法在基类以及所有的派生类中是虚的。2.如果使用指向对象的引用或指针来调用虚函数,程序将使用为对象类型定义的方法,而不是使用为引用或指针类型定义的方法。这样基类引用或指针就可以指向派生类对象。3.如果定义的类将被用作基类,则应将那些要在派生类中重新定义的类方法声明为虚的。
一般这里说的虚函数都是public的,如果虚函数用作private呢?看下面一个例子:
#include "stdafx.h"
#include <iostream>
using std::cout;
using std::endl;
class Bclass
{
private:
virtual void fun() { cout << "Bclass fun is here!" << endl ; }
void fun2() { cout << "Bclass fun2 is here!" << endl; }
friend int main();
};
class Dclass : public Bclass
{
public:
virtual void fun() { cout << "Dclass fun is here!" << endl; }
void fun2() { cout << "Dclass fun2 is here!" << endl; }
};
int main()
{
Bclass *pObject = new Dclass();
pObject->fun();
pObject->fun2();
return 0;
}