阿里機試題目 虛函式

2021-07-04 13:51:29 字數 1447 閱讀 1605

參考:

class my

{};int main()

;int main()

;int main();};

class child:public father

;int main()

;class dog : public animal

~dog(){}

virtual void print_age(void)

~cat(){}

virtual void print_age(void)

第1行定義了cat類的乙個物件kitty,這將呼叫cat::cat()建構函式。

第2行定義了dog類的乙個物件jd,這將呼叫dog::dog()建構函式。

第3行:定義了乙個基類指標,因為類animal中含有純虛函式,所以不能定義animal類的物件。

第6行:

p和q是分別指向kitty和jd兩個物件的首位址,因為類cat和dog都包含虛函式,所以kitty和jd兩個物件均包含乙個虛函式表,並通過乙個指標指向它,p[0]和q[0]就是該虛函式表指標,而p[1]和q[1]則為該物件的資料成員即age的值,p[1] = q[1];將kitty的age被修改為2。

第7、8:

pa指標宣告時的型別為基類animal,它指向派生類kitty物件,典型的多型特性,則pa的靜態型別為animal,動態型別為cat。

而print_age()是虛函式,因此是動態繫結,動態繫結指向是動態型別的成員,因此呼叫的是kitty的成員函式print_age()。

第9、10:

pa指標宣告時的型別為基類animal,它指向派生類jd物件,典型的多型特性,則pa的靜態型別為animal,動態型別為dog。

而print_age()是虛函式,因此是動態繫結,動態繫結指向是動態型別的成員,因此呼叫的是jd的成員函式print_age()。

#include "stdio.h"

class base

virtual int bar(int x)

}; class derived : public base

int bar(int x)

}; int main(void)

輸出100 50

derived obj;

base *pobj = &obj;

printf("%d,", pobj->bar((char)(100)))

printf("%d,", pobj->bar(100));

第乙個bar(char)是非虛函式,因此是靜態繫結,靜態繫結是指指標指向宣告時的物件,pobj宣告時為base類,因此呼叫的是base類的bar(char)

第二個bar(char)是虛函式,因此是動態繫結,動態繫結是指指標指向引用的物件,pobj引用derived物件,因此呼叫的是derived類的bar(int)

阿里筆試題目

題目描述 乙個 的訂單中包含n 10 n 1 種商品a1,a2,an,每種商品數量分別為a1,a2,an個,記做 ak 0 訂單在倉庫生產過程中,倉庫為了提公升作業效率,會提前對熱門組合商品進行預包裝。假設這n個商品有m 9 m 1 個商品組合,每個組合bomk包含a1,a2,an的數量分別為 bk...

華為機試題目

在網上找了一些華為機試的題目,每日堅持寫 1 字元 字串與數值間的轉換 分析 int i ch 48 這個語句完成了單個字元 ch 轉化為數字並存入整型變數 i 的功能。因為字元 0 在 ascii 碼中對應了 48,後面的數值也是以 1 遞增,所以用它對應的ascii碼減去48就是這單個字元的整數...

機試題目2011 2019

機試題目彙總 數學 簡單模擬 卡特蘭數2019.3 難 直接上公式 相隔天數2019.1 簡單 日期處理 求眾數2018.1 簡單 用map儲存直接排序或陣列儲存後再排序 求中位數2017.1 簡單 分奇偶 求校驗位2017.2 簡單 看懂題按要求 長方形中的正方形個數2015.1 簡單 邊界條件 ...