正在閱讀:C++中類(lèi)的多態(tài)與虛函數(shù)的使用C++中類(lèi)的多態(tài)與虛函數(shù)的使用

2005-03-16 10:18 出處:PConline 作者:管寧 責(zé)任編輯:xietaoming

 

  類(lèi)的多態(tài)特性是支持面向?qū)ο蟮恼Z(yǔ)言最主要的特性,有過(guò)非面向?qū)ο笳Z(yǔ)言開(kāi)發(fā)經(jīng)歷的人,通常對(duì)這一章節(jié)的內(nèi)容會(huì)覺(jué)得不習(xí)慣,因?yàn)楹芏嗳隋e(cuò)誤的認(rèn)為,支持類(lèi)的封裝的語(yǔ)言就是支持面向?qū)ο蟮,其?shí)不然,Visual BASIC 6.0 是典型的非面向?qū)ο蟮拈_(kāi)發(fā)語(yǔ)言,但是它的確是支持類(lèi),支持類(lèi)并不能說(shuō)明就是支持面向?qū)ο,能夠解決多態(tài)問(wèn)題的語(yǔ)言,才是真正支持面向?qū)ο蟮拈_(kāi)發(fā)的語(yǔ)言,所以務(wù)必提醒有過(guò)其它非面向?qū)ο笳Z(yǔ)言基礎(chǔ)的讀者注意!

  多態(tài)的這個(gè)概念稍微有點(diǎn)模糊,如果想在一開(kāi)始就想用清晰用語(yǔ)言描述它,讓讀者能夠明白,似乎不太現(xiàn)實(shí),所以我們先看如下代碼:

//例程1 
#include <iostream>     
using namespace std;   
   
class Vehicle 
{   
public:   
    Vehicle(float speed,int total) 
    { 
        Vehicle::speed=speed; 
        Vehicle::total=total; 
    } 
    void ShowMember() 
    { 
        cout<<speed<<"|"<<total<<endl; 
    } 
protected:   
    float speed; 
    int total; 
};   
class Car:public Vehicle   
{   
public:   
    Car(int aird,float speed,int total):Vehicle(speed,total)   
    {   
        Car::aird=aird;   
    } 
    void ShowMember() 
    { 
        cout<<speed<<"|"<<total<<"|"<<aird<<endl; 
    } 
protected:   
    int aird; 
};   
 
void main()   
{   
    Vehicle a(120,4); 
    a.ShowMember(); 
    Car b(180,110,4); 
    b.ShowMember(); 
    cin.get(); 
}

  在c++中是允許派生類(lèi)重載基類(lèi)成員函數(shù)的,對(duì)于類(lèi)的重載來(lái)說(shuō),明確的,不同類(lèi)的對(duì)象,調(diào)用其類(lèi)的成員函數(shù)的時(shí)候,系統(tǒng)是知道如何找到其類(lèi)的同名成員,上面代碼中的a.ShowMember();,即調(diào)用的是Vehicle::ShowMember(),b.ShowMember();,即調(diào)用的是Car::ShowMemeber();。

鍵盤(pán)也能翻頁(yè),試試“← →”鍵
302 Found

302 Found


Powered by Tengine
tengine