1. 程式人生 > >牛客網做題總結(1)

牛客網做題總結(1)

 在牛客網上做了一 些題,過來總結一下問題

   1.陣列

  二維陣列第一維長度代表每一列的元素個數,第二維代表每一行的元素個數且不能省略

   2.關於類成員函式的過載,覆蓋和隱藏:
 

    題目:類成員函式的過載、覆蓋和隱藏區別描述正確的有?

A.覆蓋是指在同一個類中名字相同,引數不同

B.過載是指派生類函式覆蓋基類函式,函式相同,引數相同,基類函式必須有virtual關鍵字

C.派生類函式與基類函式相同,但是引數不同,會"隱藏"父類函式

D.函式名字相同,引數相同,基類無virtual關鍵字的派生類的函式會"隱藏"父類函式


  總結如下:

a.成員函式被過載的特徵

(1)相同的範圍(在同一個類中);

(2)函式名字相同;

(3)引數不同;

(4)virtual 關鍵字可有可無。

b.覆蓋是指派生類函式覆蓋基類函式,特徵是:

(1)不同的範圍(分別位於派生類與基類);

(2)函式名字相同;

(3)引數相同;

(4)基類函式必須有virtual 關鍵字。

c.“隱藏”是指派生類的函式遮蔽了與其同名的基類函式,規則如下:

(1)如果派生類的函式與基類的函式同名,但是引數不同。此時,不論有無virtual關鍵字,基類的函式將被隱藏(注意別與過載混淆)。

(2)如果派生類的函式與基類的函式同名,並且引數也相同,但是基類函式沒有virtual 關鍵字。此時,基類的函式被隱藏(注意別與覆蓋混淆)

3.關於行內函數

(1)標頭檔案中不但要包含行內函數的宣告,還要有行內函數的定義。

 (2)定義在類宣告之中的成員函式將自動地成為行內函數

 (3)使用者定義的行內函數如果行數較多,編譯器會忽略其成為內聯的請求

 4.關於函式的定義

題目:用變數a給出下面的定義:一個有10個指標的陣列,該指標指向一個函式,該函式有一個整形引數並返回一個整型數

int (*a【10】)(int);

 分析方法:首先看a【10】是個存放有十個元素的陣列,再看括號內*表示陣列中存放了十個指標元素,再看右邊的(int)

說明指標元素指向整形,最後再看左邊的int,表示返回值是整形

 類似的

int *a[10]; //指向int型別的指標陣列a[10]

int (*a)[10]; //指向有10個int型別陣列的指標a

int (*a)(int);//函式指標,指向有一個引數並且返回型別 均為int的函式

int (*a[10])(int); //函式指標的陣列,指向有一個引數並且返回型別均為int的函式的陣列

 5.一個類有基類、內部有一個其他類的成員物件,建構函式的執行順序是怎樣的

基類的,成員物件的,自己的

(先父母,再客人,後自己)

6.共有私有成員函式,虛構函式都能被宣告為虛擬函式,但建構函式不行

 大致就是這麼多了,之後會繼續在網上做題,提升能力。