牛客網做題總結(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.共有私有成員函式,虛構函式都能被宣告為虛擬函式,但建構函式不行
大致就是這麼多了,之後會繼續在網上做題,提升能力。