1. #i nclude 和#i nclude “filename.h” 有什么區(qū)別?
答:對于#i nclude ,編譯器從標準庫路徑開始搜索filename.h
對于#i nclude “filename.h”,編譯器從用戶的工作路徑開始搜索filename.h
2. 在C++ 程序中調(diào)用被C 編譯器編譯后的函數(shù),為什么要加extern “C”?
答:C++語言支持函數(shù)重載,C 語言不支持函數(shù)重載。函數(shù)被C++編譯后在庫中的名字與C 語言的不同。假設某個函數(shù)的原型為: void foo(int x, int y);
該函數(shù)被C 編譯器編譯后在庫中的名字為_foo , 而C++ 編譯器則會產(chǎn)生像_foo_int_int 之類的名字。
C++提供了C 連接交換指定符號extern“C”來解決名字匹配問題。
3. 一個類有基類、內(nèi)部有一個其他類的成員對象,構(gòu)造函數(shù)的執(zhí)行順序是怎樣的?
答:先執(zhí)行基類的(如果基類當中有虛基類,要先執(zhí)行虛基類的,其他基類則按照聲明派生類時的順序依次執(zhí)行),再執(zhí)行成員對象的,最后執(zhí)行自己的。
4. New delete 與malloc free 的區(qū)別
答案:用malloc 函數(shù)不能初始化對象,new 會調(diào)用對象的構(gòu)造函數(shù)。Delete 會調(diào)用對象的destructor,而free 不會調(diào)用對象的destructor.
5. Struct 和class 的區(qū)別
答案:struct 中成員變量和成員函數(shù)默認訪問權(quán)限是public,class 是private
6.請問下面程序有什么錯誤?
int a[60][250][1000],i,j,k;
for(k=0;k<=1000;k++)
for(j=0;j<250;j++)
for(i=0;i<60;i++)
a[i][j][k]=0;
答案:把循環(huán)語句內(nèi)外換一下
7. 請寫出下列代碼的輸出內(nèi)容
#include
main()
{
int a,b,c,d;
a=10;
b=a++;
c=++a;
d=10*a++;
printf("b,c,d:%d,%d,%d",b,c,d);
return 0;
}
答:10,12,120