1. 假定ab為乙個類,則執行「ab a(2), b[3],*p[4];」語句時呼叫該類建構函式的次數為()
a. 3 b. 4 c. 5 d. 9
答案:b
解析:(p79)a(2)呼叫1次帶引數的建構函式,b[3]呼叫3次無引數的建構函式,指標沒有給它
分配空間,沒有呼叫建構函式。所以共呼叫建構函式的次數為4。
2. 如果表示式++a中的「++」是作為成員函式過載的運算子,若採用運算子函式呼叫格式,則可表示為()
a. a.operator++(1) b. operator++(a) c. operator++(a,1) d. a.operator++()
答案:d
解析:(p186)運算子的過載,字首先讓變數變化。呼叫++a,等價為a.operator++(),注意無參
的形式。字尾的話a++,等價於a.operator(0),帶形參,形參名可省。
3.
內聯函式
特徵**少,頻繁呼叫,執行效率高。
過載函式
解決統一介面的問題;
遞迴子程式呼叫,程式呼叫要耗費很多空間和時間,迴圈/迭代都比遞迴有效率得多,遞迴只是
從形式上,邏輯比較簡潔。
巢狀函式
反覆呼叫,速度較慢。
4. 要實現動態聯編必須()
a. 通過成員名限定來呼叫虛函式
b. 通過物件名來呼叫虛函式
c. 通過派生類物件來呼叫虛函式
d. 通過物件指標或引用來呼叫虛函式
答案:d 解析:(p170)通過基類指標或基類引用來呼叫虛函式實現動態多型性,靜態多型性通過過載來實
現的。所以選擇d項。
5. 已知:p是乙個指向類a資料成員m的指標,a1是類a的乙個物件。如果要給m賦值為5,正確 的是()
a. a1.p=5; b. a1->p=5; c. a1.*p=5; d. *a1.p=5;
答案:c
時注意以下幾點:
指向成員函式的指標必須於其賦值的函式型別匹配的三個方面:(1)引數型別和個數;(2)返回
型別;(3)它所屬的類型別。
成員函式指標的宣告:指向short型的screen類的成員的指標定義如下: short screen::* ps_screen;
類成員的指標必須總是通過特定的物件或指向改型別的物件的指標來訪問。是通過使用兩個指
向成員操作符的指標(針對類物件和引用的.*,以及針對指向類物件的指標的->*)
6. 如果採用動態多型性,要呼叫虛函式的是()
a. 基類物件指標 b. 物件名 c. 基類物件 d. 派生類名
答案:a
解析:基類指標或者基類引用呼叫虛函式都會產生動態多型性
7. c++支援的兩種多型性分別是___多型性和執行多型性。(乙個進入物件語言的金典問題)
答案:(p165)靜態或編譯
[解析]多型性包括靜態(編譯時)的和動態(執行時)的動態性。
8.對賦值運算子進行過載時,應宣告為___函式。
答案:(p183)類成員
[解析]運算子過載的方法有友元或者成員函式兩種途徑,但是賦值運算子只能使用成員函式的
方法來實現。
面試題目積累
加粗樣式 toc 1 hashmap不是執行緒安全的,concurrenthashmap是執行緒安全的 2 利用key的hashcode重新hash計算出當前物件的元素在陣列中的下標 3 儲存時,如果出現hash值相同的key,此時有兩種情況。1 如果key相同,則覆蓋原始值 2 如果key不同 出...
C 常見基礎題目
下列的 b 是以引用作引數形式呼叫函式。a.形參和實參都是變數 b.形參是引用,實參是變數 c.形參是指標,實參是位址值 d.形參是陣列名,實參是陣列名 在下面有關析構函式的描述中,正確的是 c a.析構函式名與類名完全相同 b.乙個類中可以定義多個析構函式 c.析構函式不能指定返回型別 d.析構函...
c語言基礎題目
第一天 3.下面兩個函式有什麼區別 void f1 void f2 區別在於 換行符號 n 有換行符號的可以在快取區中讀取資料 直接列印出來,沒有的會在程式結束列印,或者快取區滿了直接 列印出來。實現函式,初始化如下結構體 struct area void init area struct area...