/*
* 程序的版权和版本声明部分
* Copyright (c)2013, 烟台大学计算机学院学生
* All rightsreserved.
* 文件名称: object.cpp
* 作者:赵晓晨
* 完成日期: 2013年05月31日
* 版本号: v1.0
* 输入描述:无
* 问题描述:无
* 程序输出:无
*/
#include <iostream>
using namespace std;
class Vehicle //交通工具
{
public:
virtual void run() const=0;//run()为纯虚函数
};
class Car: public Vehicle //汽车
{
public:
void run() const
{
cout << "run a car. "<<endl;
}
};
class Airplane: public Vehicle //飞机
{
public:
void run() const
{
cout << "run a airplane. "<<endl;
}
};
int main()
{
cout<<"(a) 直接用对象访问成员函数: "<<endl;
Car car;
Airplane airplane;
car.run();
airplane.run();
cout<<"(b)用指向基类的指针访问成员函数: "<<endl;
Vehicle *vp;
vp=&car;
vp->run();
vp=&airplane;
vp->run();
return 0;
}
结果:
体会:
当基类同名成员函数定义为纯虚函数时,运行结果不输出基类的成员函数。
因为:
virtual void run() const=0;//run()为纯虚函数
纯虚函数是在声明虚函数时被“初始化”为0的函数。
纯虚函数只有函数的名字而不具备函数的功能。
对虚函数。纯虚函数。多态性。抽象类。的理解:
1.虚函数:在基类中用virtual声明成员函数的为虚函数。
2.纯虚函数:virtual 函数类型 函数名(参数列表)=0;纯虚函数没有函数体,纯虚函数只有函数的名字而不具备函数的功能。
3.多态性:向不同的对象发送同一个消息,不同的对象在接收时会产生不同的行为。
4.抽象类:不用来定义对象而只作为一种基类类型用作继承的类。由于它常用作基类,常被称为抽象基类。