/*
* 程序的版权和版本声明部分
* Copyright (c)2012, 烟台大学计算机学院学生
* All rightsreserved.
* 文件名称: object.cpp
* 作者:王飞
* 完成日期:2013 年5月 31日
* 版本号: v1.0
* 输入描述:无
* 问题描述:虚函数的体验
* 程序输出:如下
*/
#include <iostream>
using namespace std;
class Vehicle //交通工具
{
public :
//定义输出函数为虚函数
virtual void run()const{cout<<"run a vehicle."<<endl;}
};
class Car: public Vehicle //汽车
{
public :
//定义输出函数为虚函数
virtual void run()const
{
cout<<" run a car. "<<endl;
}
};
class Airplane: public Vehicle //飞机
{
public :
//定义输出函数为虚函数
virtual void run()const
{
cout<<"run a airplane ."<<endl;
}
};
int main ()
{
cout<<"(a) 直接用对象访问成员函数:"<<endl;
Vehicle v;
v.run();
Car car;
Airplane airplane;
car.run();
airplane.run();
cout<<"(b) 用指向基类的指针来访问成员函数:"<<endl;
Vehicle *vp;
vp=&car;
vp->run();
vp=&airplane;
vp->run();
return 0;
}
输出结果:
心得体会:
对于虚函数自己的理解:简单地说,那些被virtual关键字修饰的成员函数,就是虚函数。虚函数的作用,用专业术语来解释就是实现多态性(Polymorphism),多态性是将接口与实现进行分离;用形象的语言来解释就是实现以共同的方法,但因个体差异而采用不同的策略。利用指针来逐一的进行访问。调用的函数在基类中被说明为虚函数,那么子类中该函数也自动成为虚函数,调用时会根据指针所指向的对象调用相应类的虚函数.实现动态联编。