題目(六):執行下列
c++**,輸出什麼?
struct
point3d ;
int_tmain(int argc, _tchar* argv)
答案:輸出
8。由於在
ppoint->z
的前面加上了取位址符號,執行到此時的時候,會在
ppoint
的指標位址上加
z在型別
point3d
中的偏移量
8。由於
ppoint
的位址是
0,因此最終
offset
的值是8
。&(ppoint->z)
的語意是求
ppoint
中變數z
的位址(
ppoint
的位址0加z
的偏移量
8),並不需要訪問
ppoint
指向的記憶體。只要不訪問非法的記憶體,程式就不會出錯。
題目(七):執行下列
c++**,輸出什麼?
classa
virtual
void print()
}; class
b: public a
virtual
void print()
}; int
_tmain(int argc, _tchar* argv)
答案:先後列印出兩行
:a is constructed. b is constructed. 呼叫b
的建構函式時,先會呼叫
b的基類及
a的建構函式。然後在
a的建構函式裡呼叫
。由於此時例項的型別
b的部分還沒有構造好,本質上它只是
a的乙個例項,他的虛函式表指標指向的是型別
a的虛函式表。因此此時呼叫的
是a::print
,而不是
b::print
。接著呼叫型別
b的建構函式,並呼叫
。此時已經開始構造
b,因此此時呼叫的
是b::print
。同樣是呼叫虛函式
,我們發現在型別
a的建構函式中,呼叫的是
a::print,在b
的建構函式中,呼叫的是
b::print
。因此虛函式在建構函式中,已經失去了虛函式的動態繫結特性。
題目(八):執行下列
c#**,輸出是什麼?
namespace
changesonstring
} }
答案:輸出是
hello
。由於在
.net
中,string
有乙個非常特殊的性質:
string
的例項的狀態不能被改變。如果
string
的成員函式會修改例項的狀態,將會返回乙個新的
string
例項。改動只會出現在返回值中,而不會修改原來的例項。所以本題中輸出仍然是原來的字串值
hello
。如果試圖改變
string
的內容,改變之後的值可以通過返回值拿到。用
stringbuilder
是更好的選擇,特別是要連續多次修改的時候。如果用
string
連續多次修改,每一次修改都會產生乙個臨時物件,開銷太大。
題目(九):在
c++和
c#中,
struct
和class
有什麼不同
?答案:在
c++中,如果沒有標明函式或者變數是的訪問許可權級別,在
struct
中,是public
的;而在
class
中,是private的。在
c#中,如果沒有標明函式或者變數的訪問許可權級別,
struct
和class
中都是private
的。struct
和class
的區別是:
struct
定義值型別,其實例在棧上分配記憶體;
class
定義引用型別,其實例在堆上分配記憶體。
題目(十):執行下圖中的
c#**,輸出是什麼
?namespace
staticconstructor
} classb
public b()
} class
program }
}答案:列印出四行,分別是a1、
a3、a2、
a4。在呼叫型別
b的**之前先執行
b的靜態建構函式。靜態函式先初始化型別的靜態變數,再執行靜態函式內的語句。因此先列印
a1再列印
a3。接下來執行
b b = new b()
,即呼叫
b的普通建構函式。建構函式先初始化成員變數,在執行函式體內的語句,因此先後列印出a2、
a4。
C C C 面試題精選(2)
題目 六 執行下列 c 輸出什麼?struct point3d int tmain int argc,tchar argv 答案 輸出 8。由於在 ppoint z 的前面加上了取位址符號,執行到此時的時候,會在 ppoint 的指標位址上加 z在型別 point3d 中的偏移量 8。由於 ppoi...
C C C 面試題精選(2)
題目 六 執行下列 c 輸出什麼?struct point3d int tmain int argc,tchar argv 答案 輸出 8。由於在 ppoint z 的前面加上了取位址符號,執行到此時的時候,會在 ppoint 的指標位址上加 z在型別 point3d 中的偏移量 8。由於 ppoi...
C C C 面試題精選(2)
題目 六 執行下列c 輸出什麼?struct point3d int x int y int z int tmain int argc,tchar argv point3d ppoint null int offset int ppoint z printf d offset return 0 答案...