| 導購 | 订阅 | 在线投稿
分享
 
 
 

C++類的分解,抽象類與純虛函數的需要性

2008-06-01 02:03:25  編輯來源:互聯網  简体版  手機版  移動版  評論  字體: ||
 

爲了不模糊概念在這裏我們就簡單的闡述一下類的分解,前面的教程我們著重講述了類的繼續,繼續的特點就是,派生類繼續基類的特性,進行結構擴張,這種逐步擴張,

逐步在各派生類中分解彼此不同特性的過程其實就是類的分解。

分解過程筆者在這裏不想再拿代碼進行過多闡述分析了,意思說到,對于逐步分解,逐步擴張的思想就靠大家自己思考了。

拿前面交通工具類的程序進行思考,由交通工具派生出來的汽車類,飛機類,是具備更具體特性的描述的類,而對于交通工具這一個基類來說,它的特性是模糊的,廣泛的,假如建立一個交通工具類的對象並沒有實際意義,爲了對這種沒有必要能夠建立對象的類進行約束,c++引入了抽象類的特性,抽象類的約束控制來源于純虛函數的定義。

生命一個類的成員函數爲純虛函數的意義在于讓c++知道該函數並無意義,它的作用只是爲派生類進行虛函數重載保留位置。

純虛函數的定義方法就是在類的成員函數的聲明之後加上「=0」的標記,類中一旦有純虛函數的定義那麽這個類就再也不能創建此類的對象了,我們把這種類叫做抽象類。

抽象類的示例代碼如下:

//程序作者:管甯

//站點:www.cndev-lab.com

//所有稿件均有版權,如要轉載,請務必聞名出處和作者

#include <iostream>

using namespace std;

class Vehicle

{

public:

Vehicle(float speed,int total)

{

Vehicle::speed = speed;

Vehicle::total = total;

}

virtual void ShowMember()=0;//純虛函數的定義

PRotected:

float speed;

int total;

};

class Car:public Vehicle

{

public:

Car(int aird,float speed,int total):Vehicle(speed,total)

{

Car::aird = aird;

}

virtual void ShowMember()//派生類成員函數重載

{

cout<<speed<<""<<total<<""<<aird<<endl;

}

protected:

int aird;

};

int main()

{

//Vehicle a(100,4);//錯誤,抽象類不能創建對象

Car b(250,150,4);

b.ShowMember();

system("pause");

}

C++類的分解,抽象類與純虛函數的需要性
更多內容請看C/C++技術專題專題,或

 
  爲了不模糊概念在這裏我們就簡單的闡述一下類的分解,前面的教程我們著重講述了類的繼續,繼續的特點就是,派生類繼續基類的特性,進行結構擴張,這種逐步擴張, 逐步在各派生類中分解彼此不同特性的過程其實就是類的分解。    分解過程筆者在這裏不想再拿代碼進行過多闡述分析了,意思說到,對于逐步分解,逐步擴張的思想就靠大家自己思考了。    拿前面交通工具類的程序進行思考,由交通工具派生出來的汽車類,飛機類,是具備更具體特性的描述的類,而對于交通工具這一個基類來說,它的特性是模糊的,廣泛的,假如建立一個交通工具類的對象並沒有實際意義,爲了對這種沒有必要能夠建立對象的類進行約束,c++引入了抽象類的特性,抽象類的約束控制來源于純虛函數的定義。    生命一個類的成員函數爲純虛函數的意義在于讓c++知道該函數並無意義,它的作用只是爲派生類進行虛函數重載保留位置。   純虛函數的定義方法就是在類的成員函數的聲明之後加上「=0」的標記,類中一旦有純虛函數的定義那麽這個類就再也不能創建此類的對象了,我們把這種類叫做抽象類。 抽象類的示例代碼如下: //程序作者:管甯 //站點:www.cndev-lab.com //所有稿件均有版權,如要轉載,請務必聞名出處和作者 #include <iostream> using namespace std; class Vehicle { public: Vehicle(float speed,int total) { Vehicle::speed = speed; Vehicle::total = total; } virtual void ShowMember()=0;//純虛函數的定義 PRotected: float speed; int total; }; class Car:public Vehicle { public: Car(int aird,float speed,int total):Vehicle(speed,total) { Car::aird = aird; } virtual void ShowMember()//派生類成員函數重載 { cout<<speed<<""<<total<<""<<aird<<endl; } protected: int aird; }; int main() { //Vehicle a(100,4);//錯誤,抽象類不能創建對象 Car b(250,150,4); b.ShowMember(); system("pause"); } [url=/bbs/detail_1785260.html][img]http://image.wangchao.net.cn/it/1323424100272.gif[/img][/url] 更多內容請看C/C++技術專題專題,或
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
王朝網路微信公眾號
微信掃碼關註本站公眾號 wangchaonetcn
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有