background image

class

 

BaseClass{

public:

virtual   void   Display(   )   {   cout   100   "\n";   }

};

class

 

DerivedClass:

 

public

 

BaseClass{

public:

virtual   void   Display(   )   {   cout   200   "\n";   }

};

void   Print(BaseClass*   pbc){   pbc->Display(   );   }

int

 

main(

 

)

{

 

BaseClass*

 

pbc

 

=

 

new

 

BaseClass;

DerivedClass*

 

pdc

 

=

 

new

 

DerivedClass;

Print(pbc);//

 

100

Print(pdc);//

 

200

return

 

0;

}

V-table

 

(Virtual

 

function

 

table)

当 C++程式呼叫非虚函数, 采用与 C 程式呼叫函数所用方式一样的

静态绑定来呼叫函数. 但是 C++程式若是透过指向类别的指针来呼

叫虚函数时, 编译程式则采用所谓的晚期绑定(late binding)或静态

 

绑 定

(static   binding) 技 术 来 呼 叫 函 数 .

而 C++虚函数用虚函数表(virtual function table), 或称 V-表来实作

动态绑定, 所谓的 V-表是一个函数指针的阵列, 这是编译程序替每个

使

 

(pure   virtual   function)

一个不仅可被重新定义, 而且必须被重新定义的成员函数就称为纯虚

函数, 

 

你只要指定函数一个零值 (更有效说法是一个空指针),就可将虚

成 员 函 数 转 为 纯 虚 成 员 函 数 , 如 以 下 所 示

virtual

 

void

 

PrintData()

 

=

 

0;

 

(abstract

 

class)

当一个类含有至少一个纯虚函数时, 此类就称为抽象类,而你无法以此

.

C++

 

template

 

classes

使

class

 

Collection{

int

 

A[10];

}

Collection

 

object;

使

template

 

class

 

T>

 

//

class

 

Collection{