2012年 上半年 第十三周 C++程序设计 (三十七)
来源:互联网 发布:jdk源码 视频教程 编辑:程序博客网 时间:2024/05/01 04:15
【任务】阅读下面的程序#include <iostream> using namespace std;class Vehicle {public: void run() const { cout << "run a vehicle. "<<endl; } //(2) 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;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();system("pause");return 0;}
(任务1)请写出程序的执行结果,并在上机时对照理解
#include <iostream> using namespace std;class Vehicle {public: void run() const { cout << "run a vehicle. "<<endl; } //(2) 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;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();system("pause");return 0;}
(任务1.2)如果将Vehicle类的定义修改为虚函数,其余不变,请写出程序的执行结果,并在上机时对照理解
class Vehicle
{public:
virtual void run() const { cout << "run a vehicle. "<<endl; } //(2) run()为虚函数
};
#include <iostream> using namespace std;class Vehicle {public: virtual void run() const { cout << "run a vehicle. "<<endl; } //(2) 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;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();system("pause");return 0;}
(任务1.3)如果将Vehicle类的定义修改为纯虚函数,找出main()函数中将使编译出错的行删除(或改为注释),请写出程序的执行结果,并在上机时对照理解
class Vehicle
{public:
virtual void run() const = 0; //(3) run()为纯虚函数
};
#include <iostream> using namespace std;class Vehicle {public: virtual void run() const = 0; //(3) 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;/*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();system("pause");return 0;}
结论:
(1)纯虚函数是不能被调用的!
(2)派生类是基类的具体化!
(3)抽象类作为共同基类!
- 2012年 上半年 第十三周 C++程序设计 (三十七)
- 2012年 上半年 第十三周 C++程序设计 (三十八)
- 2012年 上半年 第十三周 C++程序设计 (三十九)
- 2012年 上半年 第十三周 C++程序设计 (四十)
- 2012年 上半年 第二周 C++ 程序设计 (二)
- 2012年 上半年 第二周 C++程序设计 (三)
- 2012年 上半年 第三周 C++程序设计 (四)
- 2012年 上半年 第三周 C++程序设计 (五)
- 2012年 上半年 第三周 C++程序设计 (六)
- 2012年 上半年 第三周 C++程序设计 (七)
- 2012年 上半年 第五周 C++程序设计 (十一)
- 2012年 上半年 第五周 C++程序设计 (十二)
- 2012年 上半年 第五周 C++程序设计 (十三)
- 2012年 上半年 第六周 C++程序设计 (十五)
- 2012年 上半年 第六周 C++程序设计 (十六)
- 2012年 上半年 第六周 C++程序设计 (十七)
- 2012年 上半年 第六周 C++程序设计 (十八)
- 2012年 上半年 第六周 C++程序设计 (十九)
- Three things you should never put in your database
- x86系统引导(2)
- 苹果公司联系邮箱大全
- 第十二章
- gfgffdsafasdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff反复反复反复反复反复反复反复反复反复反复反复反
- 2012年 上半年 第十三周 C++程序设计 (三十七)
- android优化实战(二)-BigInteger
- 编译器自动优化
- 【开发早会】快速切换,进入状态
- View的setOnClickListener的添加方法
- ubuntu useradd: unable to lock password file
- C++虚继承的作用
- git format-patch 常用方法 .
- 排序口诀