牛客網做題總結(1)

2021-09-03 06:57:09 字數 1435 閱讀 3828

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

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)(int);

分析方法:首先看a是個存放有十個元素的陣列,再看括號內*表示陣列中存放了十個指標元素,再看右邊的(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.共有私有成員函式,虛構函式都能被宣告為虛函式,但建構函式不行

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

牛客網做題筆記 洗牌問題

洗牌在生活中十分常見,現在需要寫乙個程式模擬洗牌的過程。現在需要洗2n張牌,從上到下依次是第1張,第2張,第3張一直到第2n張。首先,我們把這2n張牌分成兩堆,左手拿著第1張到第n張 上半堆 右手拿著第n 1張到第2n張 下半堆 接著就開始洗牌的過程,先放下右手的最後一張牌,再放下左手的最後一張牌,...

牛客網做題學到的知識(六)

h5新增表單元素 bind改變上下文的this,bind返回值是函式 foreach 的區別 5個陣列array方法 indexof filter foreach map reduce使用例項 基本型別值和引用型別值的區別 shift,unshift,concat 正規表示式 slice,splic...

牛客網程式設計題1

輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。思路 本題最初想簡單的求模算出等於1的位數,但是發現負數不行。其實簡單的做法應該是與 1相與,如果為 1,則原來為 1,迴圈移位判斷。但注意,要左移,要是右移,對於負數會一直在高位補 1,導致結果不準確。class solution ...