天天看點

《第十三周實驗報告任務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》
《第十三周實驗報告任務1》
《第十三周實驗報告任務1》
#include <iostream> 

using namespace std;

class Vehicle 
{
public: 
	virtual void run() const = 0;
}; 
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)任務1.1和任務1.2比較

任務1.2在基類中使用了虛函數,這樣可以用指向基類的指針來靈活通路派生類中同名的成員函數,是程式易于了解易于讀取。

(2)通過任務1.3的操作我明白了純虛函數是不能被調用的,包含純虛函數的類無法建立對象;

(3)抽象類的作用是作為一個類族的共同基類。

(4)動态多态性是通過虛函數(virtual function)實作的,通過指向基類的指針來靈活通路派生類中同名的成員函數,實作不同的功能。

繼續閱讀