那麼多c++試題,其實最關鍵的是要知道考察的知識點在**。哎,應該好好重新看看《effective c++》了。
網易3道c++試題:
題目1:
[cpp]view plain
copy
class
a
~a()
void
fun1()
intgetvalue()
protected
: virtual
void
fun2()
private
: int
i;
};
class
b:public
a
virtual
~b()
void
fun1()
protected
: void
fun2()
private
: int
i;
};
intmain()
;
考點:在建構函式中呼叫了虛函式。
根據《effective c++》條款09:絕不要在建構函式和析構函式中呼叫虛函式,
因為:這類呼叫從不下降至子類。此時,物件在derived class呼叫之前,絕不會成為乙個derived物件。
所以,答案是11(而不是12)。
題目2:
[cpp]view plain
copy
class
a;
inta::fun(
inti)
class
b:public
a;
intb::fun(
inti)
intmain()
;
考點:哎,虛函式是動態繫結的,但是預設引數是靜態繫結的。
所以,答案是1。而不是10。靠!
題目三:
考察c++中static 成員、const成員、static const成員的初始化時機:
在c++中,static靜態成員變數不能在類的內部初始化。在類的內部只是宣告,定義必須在類定義體的外部,通常在類的實現檔案中初始化,如:double account::rate=2.25;static關鍵字只能用於類定義體內部的宣告中,定義時不能標示為static
在c++中,const成員變數也不能在類定義處初始化,只能通過建構函式初始化列表進行,並且必須有建構函式。
const資料成員
只在某個物件生存期內是常量,而對於整個類而言卻是可變的
。因為類可以建立多個物件,不同的物件其const資料成員的值可以不同。所以不能在類的宣告中初始化const資料成員,因為類的物件沒被建立時,編譯器不知道const資料成員的值是什麼。
const資料成員的初始化只能在類的建構函式的初始化列表中進行。要想建立在整個類中都恆定的常量,應該用類中的列舉常量來實現,或者static cosnt。
乙個例子如下:
[cpp]view plain
copy
class
test
enum
;
private
:
const
inta;
//只能在建構函式初始化列表中初始化
static
intb;
//在類的實現檔案中定義並初始化
const
static
intc;
//與 static const int c;相同。
};
inttest::b=0;
//static成員變數不能在建構函式初始化列表中初始化,因為它不屬於某個物件。
cosnt int
test::c=0;
//注意:給靜態成員變數賦值時,不需要加static修飾符。但要加cosnt
靠,還是做錯了。
[cpp]view plain
copy
#include
using
namespace
std;
class
a
virtual
void
f(){}
};
class
b:public
a
virtual
void
f(){}
};
intmain()
主要是引申dynamic_cast 和static_cast的區別,自己看看百科吧:
dynamic_cast的類一定要加virtual函式。
from:
各大公司面試集錦
微軟 有乙個整數陣列,請求出兩兩之差絕對值最小的值,記住,只要得出最小值即可,不需要求出是哪兩個數。排序,兩兩相減 寫乙個函式,檢查字元是否是整數,如果是,返回其整數值。或者 怎樣只用4行 編寫出乙個從字串到長整形的函式?基礎給出乙個函式來輸出乙個字串的所有排列。若要排除重複,先排序,每次找到從後往...
各大公司經典演算法面試題
微軟 有乙個整數陣列,請求出兩兩之差絕對值最小的值,記住,只要得出最小值即可,不需要求出是哪兩個數。寫乙個函式,檢查字元是否是整數,如果是,返回其整數值。或者 怎樣只用4行 編寫出乙個從字串到長整形的函式?給出乙個函式來輸出乙個字串的所有排列。請編寫實現malloc 記憶體分配函式功能一樣的 給出乙...
作業系統各大公司筆試題彙總
1 在段頁式儲存管理中,其虛擬位址空間是 a 一維 b 二維 c 三維 d 層次 答案 b 2 採用 不會產生內部碎片 內零頭 a 分頁式儲存管理 b 分段式儲存管理 c 固定分割槽式儲存管理 d 段頁式儲存管理 答案 b 3 段頁式管理每取一資料,要訪問 次記憶體。a 1 b 2 c 3 d 4 ...