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");

}

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

· 震驚!原來酒駕處罰這麽嚴重

酒駕處罰標准 不要有任何一絲僥幸心理! http://image....

· 把年齡相仿的獅虎熊放一起,誰更厲害?結果出人意料

很多人都想知道獅子、老虎和熊打起來誰最厲害,于是便有好事之人把這三種動物關在一起...

· 湖北宜昌三峽壩區水面驚現神秘動物

近日,湖北宜昌,一段視頻在當地熱傳:有網友在三峽壩區拍到神秘動物,體型碩大數米長...

 
類的分解,抽象類與純虛函數的需要性
  爲了不模糊概念在這裏我們就簡單的闡述一下類的分解,前面的教程我們著重講述了類的繼續,繼續的特點就是,派生類繼續基類的特性,進行結構擴張,這種逐步擴張,...查看完整版>>類的分解,抽象類與純虛函數的需要性
 
理解C++面向對象程序設計中的抽象理論
  很多書在一開始就開始學習josephus問題,爲了讓大家前面學起來較爲輕易我把前面涉及到此問題的地方都故意去掉了,現在我們已經學習過了結構體和類,所以放在這裏學習可能更合適一些。 ...查看完整版>>理解C++面向對象程序設計中的抽象理論
 
C++實戰之數據抽象
C++實戰之數據抽象 C++實戰之數據抽象 C++是一個能提高效率的工具。這就是我們爲什麽在熟悉了以前的語言以後還要花如此多的時間和經曆來學習和使用它的原因。可能我們會在一段時間內是效率降低,但是...查看完整版>>C++實戰之數據抽象
 
C++實戰之數據抽象
C++是一個能提高效率的工具。這就是我們爲什麽在熟悉了以前的語言以後還要花如此多的時間和經曆來學習和使用它的原因。可能我們會在一段時間內是效率降低,但是當我們熟練地掌握了新工具以後,我們將會得到更好的效率...查看完整版>>C++實戰之數據抽象
 
[FxCop.設計規則]1. 抽象類不應該擁有構造函數
1. 抽象類不應該擁有構造函數原文引用:Abstract types should not have constructorsTypeName:AbstractTypesShouldNotHaveConstructorsCheckId:CA1012Category:Microsoft.DesignMessage Level:CriticalWarningC...查看完整版>>[FxCop.設計規則]1. 抽象類不應該擁有構造函數