正文

 

回到頂部

1. 為什么不要重新定義繼承而來(lái)的非虛函數(shù)——實(shí)際論證

假設(shè)我告訴你一個(gè)類(lèi)D public繼承類(lèi)B,在類(lèi)B中定義了一個(gè)public成員函數(shù)mf。Mf的參數(shù)和返回類(lèi)型并不重要,所以假設(shè)它們都是void。實(shí)現(xiàn)如下:

1 class B {2 public:3 void mf();4 ...5 };6 lass D: public B { ... }

我們不需要了解B,D或者mf的任何細(xì)節(jié),考慮一個(gè)類(lèi)型D的對(duì)象x,

1 D x;                               // x is an object of type D

你會(huì)感到很吃驚,如果下面的語(yǔ)句:

1 B *pB = &x;                               // get pointer to x2 3 pB->mf();                                 // call mf through pointer

 

同下面的語(yǔ)句行為不一樣

1 D *pD = &x;      &n
        
		

網(wǎng)友評(píng)論