-
using namespace std;class father{public:virtual void jump()const { cout << "父亲可以跳十米" << endl; }void run()const { cout << "父亲可以跑万米" << endl; }private:};class son:public father{public:void jump()const { cout << "儿子可以跳十米" << endl; }void run()const { cout << "儿子可以跑万米" << endl; }void math()const{ cout << "儿子会数学" << endl; }private:};int main(){father *p = new son;//p调用的都是基类的函数p->jump();//调用子类函数(因为调用的是虚函数)p->run();//调用基类函数// p->math();//错误 不能调用子类特有的函数delete p;return 0;}
- 分析p->jump();//调用子类函数(因为调用的是虚函数):jump()前面加上关键字virtual,表示该函数是有多种形态的,即该函数可能被多个对象所拥有,而且功能不一,换句话说多个对象在调用时产生的效果也不一样。那么 系统在执行到有关键字virtual的函数时就会自动判断是哪个对象调用了它,然后调用该对象的同名函数。
- 一个函数被说明成虚函数,在派生类中覆盖了该函数,那么该函数也是个虚函数(不管有没有加virtual),不过应该把它说明为虚函数,这样看起来更好懂些。
虚函数(virtual)
最新推荐文章于 2024-01-12 17:12:27 发布