青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

專注于服務器編程、網絡編程

~~保持一顆平常心~~持之以恒~~
posts - 18, comments - 7, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

C++ 面試題

Posted on 2010-04-25 15:00 ~William~ 閱讀(1593) 評論(0)  編輯 收藏 引用 所屬分類: c++基礎

C++ 面試題

1.類成員指針

Class test

{

Public:

         Int fun(int) const;

         Int fun(int);

         Static int fun(int);

         Int iTemp;

}

1.1   非靜態成員函數指針
定義:
int (Test::*pFun)(int) = &Test::fun;
int (Test::*pFunConst)(int)const = &Test::fun;
使用:
Test a;
const Test b;
(a.*pFun)(2)
(a.*pFunConst)(2);
(b.*pFunConst)(2);
不能用(b.*pFun)(2);

1.2   非靜態成員變量
int Test::*pInt = &Test::iTemp;
(a.*pInt) = 3;

1.3   靜態成員函數指針
int (*pFun)() = &Test::fun;
int (*pFun)() = Test::fun; 都正確;(注:定義無域操作符)
使用:
(*pFun)()
pFun() 都正確;

2.非成員函數指針和靜態成員函數一致。
3.非成員函數和靜態成員函數上不允許修飾符。例如 void fun() const; void fun() volatile;
但非靜態 成員函數允許constvolatile等修飾符。
4.變量修飾符

 
auto:指定數據存儲在棧中。局部變量默認為auto。該修飾符不能用于成員變量和全局變量。
static
局部變量表示存儲在靜態空間,全局變量表示不允許外部引用。
volatile
:表示該變量可能隨時改變,不要做任何假設優化。
mutale
去除成員變量的const屬性。
extern
:全局變量默認為extern屬性,表示可被外部引用,此時與static相對。
extern int a =2;
表示定義一個可被外部引用的變量。
extern int a;
表示引用外部變量。

 

5.數據類型隱式轉換

短數據->長數據 (eg: float -> double)
有符號->無符號 (eg: int -> unsigned int )PS: 所以 int(-1)>unsigned int(1);
低精度->高精度 (eg: int -> float)

6.memcpy 防重疊覆蓋機制,strcpy 沒有。
7.float表示

共計32位,折合4字節
由最高到最低位分別是第313029……0
31
位是 符號位,1表示該數為負,0反之。
30-23
位,一共8位是指數位。
22-0
位,一共23位是尾數位。
8位分為一組,分成4組,分別是A組、B組、C組、D組。
每一組是一個字節,在內存中逆序存儲,即:DCBA

8.不能在類的聲明中初始化類常量,而只能在構造函數初始化列表來初始化
9.類中的枚舉常量不占用對象的存儲空間
10.有時候函數原本不需要返回值,但為了增加靈活性如支持鏈式表達,可以附加返回值。
11.賦值函數,應當用引用傳遞的方式返回String 對象。如果用值傳遞的方式,雖然功能仍然正確,但由于return 語句要把 *this 拷貝到保存返回值的外部存儲單元之中,增加了不必要的開銷,降低了賦值函數的效率。
12.對于非內部數據類型的對象而言,光用maloc/free 無法滿足動態對象的要求。對象在創建的同時要自動執行構造函數, 對象在消亡之前要自動執行析構函數。如果用free 釋放“new 創建的動態對象,那么該對象因無法執行析構函數而可能導致程序出錯。如果用delete 釋放“malloc 申請的動態內存,理論上講程序不會出錯,但是該程序的可讀性很差。
13.如果用new 創建對象數組,那么只能使用對象的無參數構造函數,delete時如果對象沒有析構函數,則deletedelete[]是功能相同的。
14.只能靠參數而不能靠返回值類型的不同來區分重載函數。編譯器根據參數為每個重載函數產生不同的內部標識符。并不是兩個函數的名字相同就能構成重載。全局函 數和類的成員函數同名不算重載,因為函數的作用域不同。
15.關鍵字inline

必須與函數定義體放在一起才能使函數成為內聯,僅將inline 放在函數聲明前面不起任何作用。定義在類聲明之中的成員函數將自動地成為內聯函數。
以下情況不宜使用內聯:
1)如果函數體內的代碼比較長,使用內聯將導致內存消耗代價較高。
2)如果函數體 內出現循環,那么執行函數體內代碼的時間要比函數調用的開銷大。

16.只有靜態常量整型數據成員才可以在類中初始化,普通成員只能在初始化列表或函數內初始化,常量成員只能在初始化列表。成員對象初始化的次序完全不受它們在 初始化表中次序的影響,只由成員對象在類中聲明的次序決定。
17.拷貝構造函數和賦值函數非常容易混淆,常導致錯寫、錯用。拷貝構造函數是在對象被創建時調用的,而賦值函數只能被已經存在了的對象調用。
18.不想編寫拷貝構造函數和賦值函數,又不允許別人使用編譯器生成的,則只需將拷貝構造函數和賦值函數聲明為私有函數,不用編寫代碼。
19.“const T”“T const”總是都被允許的,而且是等效的。
注意在常量指針(const pointer)中,“const”永遠出現在“*”之后。
例如:
int *const p1 = q; //
指向int 變量的常量指針
int const* p2 = q; //
指向int 常量的指針
const int* p3 = q; //
指向int 常量的指針
20.一個常見的微妙問題是,一個函數風格的宏并不遵守函數參數傳遞的規則。
21.沒有引用數組,但可有指向數組的引用,并且保留數組的邊界。
22.左值擁有保存值的位置,而右值則沒有相關地址,只是簡單值。
23.負索引是可以的,如p[-2](-2)[p]都是可以的(p必然不能是數組名),但必須保持不越界。
 sum=p()+q()+r();不能保證p(),q(),r()調用的順序。
逗號運算符","可以保證求值順序.result= ( p(),q(),r() );是先求p(),q(),然后將r()賦給result
24.在if的條件里聲明變量,且可在真假分支里面使用。
const int * const * p;p是個指針,指向常指針的,常指針指向一個常量int
25.不能用空白初始化列表來規定默認的對象初始化.

class a;
a A(); //
會警告,看起來像函數聲明
a *p=new a(); //ok
a *p=new a;   //ok

26.可以寫一句只有數字的代碼,如1234;(void)0;可以編譯執行,相當于nop
27.給函數指針賦值時可以對函數名取地址也可以不取,通過函數指針調用函數時可以用*也可不用。
28.static_cast可以轉換基本數據類型(int->char)void*和有類型指針、基類和派生類指針的轉換(多重繼承也行,它可重新計算偏移地址),但是不能轉換如(int*->char*)
29.dynamic_cast主要用于執行"安全的向下轉型",reinterpret_cast可執行任何轉換,const_cast執行去 const轉換。
30.將取地址運算符用到完全限定的類成員名(包括變量和函數),就能獲得指向成員的地址。使用形式為"X::*"來聲明一個指向類X成員的指針。注意聲明成員 函數指針的時候不能像普通函數指針可以省略&*的使用,但靜態成員函數則除外,它和普通函數一致。成員指針和普通指針不一樣,并非指向一個內存 區域,而是相當于一個結構的偏移量,當它和具體的對象結合就能指向特定對象的特定成員。
31.當把派生類對象賦給基類對象的時候會產生切割現象,即針對派生類的數據和行為將產生切割。
32.多維數組的第1個元素是數組而非普通類型。
33.在含有單參數構造函數的類中注意隱式轉換。如String s="Hello";
34.函數對象是重載函數調用運算符的類對象。
35.引用需要用左值進行初始化,但指向常量的引用除外,編譯器將創建一個臨時左值。如const int c=12;//ok 一般情況下編譯器產生的臨時對象的生命期在它所在的最大表達式范圍內,但用臨時對象初始化常量對象的引用時會讓編譯器保證臨時對象和引用生命周期一樣。
36.可以將基類的成員指針(變量或函數)安全的轉換為指向派生類成員的指針,但反之則不安全。
37.函數參數的傳遞是采用拷貝構造函數而非賦值操作。對未初始化的對象賦值可能會出現意外,如類中含有未初始化指針。
38.聲明但不定義私有的拷貝構造和賦值運算將會關閉類的復制操作。并且賦值運算、拷貝構造函數和析構函數不會被繼承,對派生類重載賦值運算時需要調用基類的賦 值運算。
39.在構造函數里對成員變量初始化,比較好的方式是使用初始化列表。在初始化列表中靜態成員和數組不能被初始化。
類的初始化順序是虛擬基類的成員->非虛基類成員->類自身成員,和初始化列表的順序無關。
含有虛擬基類和不含的類在成員布局上不一樣,含有虛擬基類的類將虛擬基類的數據放在最后面。另外如B:virtual A,C:virtual A,D:B,C;(均是虛繼承)D的構造函數將對A初始化一次(即使在初始化列表沒有顯式初始化A)B,C將不再對A初始化。
所有靜態數據(全局變量和靜態存儲變量)在使用前如未初始化其值都為0.全局變量可以存儲在靜態初始化區和未初始化區。
40.RVO返回值優化,是指在函數返回中執行拷貝初始化到直接初始化(使用帶非對象參數的構造函數)的轉換,NRVRVO類似,但使用命名局部變量來保存返 回值。p160
41.重載、覆蓋和隱藏的區別

重載的特征:在同一個類,函數名相同,參數不同,virtual可有可無。
覆蓋的特征:在兩個類(基類和派生類),函數名和參數都相同, 且必須有virtual關鍵字。
隱藏的特征:基類函數名和派生類函數名相同參數不同,且不管是否有關鍵字。或函數名、參數均相同,但基類 函數沒有virtual(有的話就是覆蓋)
不能覆蓋而只能隱藏基類非虛函數。

42.相同類型的所有對象公用一個虛函數表,在單繼承下不管有多少個虛函數都只有一個虛函數表指針。覆蓋就是在為派生類構造虛函數表時用派生類的函數地址替換基 類成員函數地址的過程。
43.使用常量類成員可能在對類對象賦值的時候產生問題。
44.有時候我們可能會看到 if (NULL == p) 這樣古怪的格式。不是程序寫錯了,是程序員為了防止將 if (p == NULL) 誤寫成 if (p = NULL),而有意把p NULL 顛倒。

 

 


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美一二三视频| 免费视频久久| 夜夜爽av福利精品导航| 欧美日韩一区在线观看视频| 99这里只有久久精品视频| 亚洲精品久久久久中文字幕欢迎你| 免费观看成人www动漫视频| 亚洲国产精品欧美一二99| 91久久在线视频| 欧美性做爰猛烈叫床潮| 性色av一区二区三区红粉影视| 亚洲欧美日韩精品| 亚洲国产精品一区二区尤物区| 亚洲大片精品永久免费| 欧美日韩国产精品专区| 亚洲欧美中文日韩在线| 久久精品欧美日韩精品| 亚洲美女诱惑| 亚洲一区二区三区四区五区午夜| 国产日本亚洲高清| 欧美成人第一页| 欧美四级剧情无删版影片| 久久久久久久久久久一区| 欧美精品九九99久久| 欧美一级在线播放| 欧美成人dvd在线视频| 亚洲永久免费| 另类尿喷潮videofree| 亚洲欧美日韩精品久久奇米色影视 | 国产自产在线视频一区| 欧美成人嫩草网站| 国产精品免费福利| 亚洲高清资源| 国产中文一区二区三区| 亚洲美女电影在线| 红桃视频一区| 一区二区三区回区在观看免费视频| 国产欧美日韩| 一本大道久久a久久精品综合| 在线观看亚洲精品| 亚洲欧美精品在线| 中日韩在线视频| 欧美高清在线视频| 久久在线免费观看| 国产女人精品视频| 亚洲少妇自拍| 99国产精品久久久久久久成人热| 久久精品亚洲精品| 久久大香伊蕉在人线观看热2| 欧美精品在线极品| 久久九九国产| 国产精品视频精品视频| 亚洲精品乱码视频| 亚洲激情欧美激情| 久久亚洲视频| 久久久噜噜噜久久人人看| 国产精品久久久999| 亚洲精品乱码久久久久久按摩观| 伊人精品成人久久综合软件| 午夜欧美视频| 久久精品成人| 国产亚洲aⅴaaaaaa毛片| 亚洲免费影视第一页| 在线午夜精品| 欧美午夜精品久久久| 99re66热这里只有精品4| 在线综合亚洲欧美在线视频| 欧美肥婆bbw| 亚洲国产一区在线| 亚洲精品视频在线观看免费| 久久中文在线| 亚洲黄一区二区| 亚洲最新中文字幕| 欧美日韩在线亚洲一区蜜芽| 日韩视频精品在线观看| 亚洲一区三区视频在线观看| 国产精品国产三级国产aⅴ入口| 日韩视频免费观看| 亚洲欧美日韩天堂| 国产曰批免费观看久久久| 欧美一区二区三区成人| 久久精品亚洲热| 在线精品视频一区二区三四| 欧美v亚洲v综合ⅴ国产v| 91久久精品日日躁夜夜躁国产| 亚洲理伦在线| 国产精品久久久久久久久久久久| 亚洲男女自偷自拍图片另类| 久久久久一区二区三区| 亚洲高清一区二| 欧美区视频在线观看| 亚洲性感激情| 美女成人午夜| 亚洲在线视频免费观看| 国产伦精品一区二区三区免费| 久久精品日韩欧美| 亚洲人成在线观看一区二区| 亚洲欧美日韩在线观看a三区| 韩国免费一区| 欧美日韩国产精品专区| 欧美一区二区三区四区在线| 亚洲电影av在线| 欧美亚洲在线视频| 亚洲精品一级| 国内精品一区二区| 欧美日韩高清在线一区| 欧美在线视频二区| 日韩一级裸体免费视频| 麻豆精品一区二区av白丝在线| 一区二区三区福利| 激情久久久久久久| 欧美视频中文字幕| 另类专区欧美制服同性| 亚洲欧美激情精品一区二区| 亚洲高清三级视频| 久久久久久久一区| 亚洲一区二区三区中文字幕| 亚洲国产高清在线观看视频| 国产精品久久久久久久电影 | 亚洲人成人99网站| 久久久久一区二区三区| 亚洲一区二区三区四区在线观看| 韩国欧美国产1区| 国产精品午夜在线观看| 欧美区国产区| 欧美国产日韩亚洲一区| 久久免费视频在线| 欧美在线观看视频一区二区三区| 一本久久知道综合久久| 亚洲片国产一区一级在线观看| 久久精品免费电影| 午夜精品理论片| 亚洲综合欧美| 一级成人国产| 亚洲美女91| 日韩视频免费在线观看| 亚洲国产一区在线观看| 亚洲丁香婷深爱综合| 韩国亚洲精品| 一区二区亚洲精品国产| 国语自产精品视频在线看一大j8| 国产精品videossex久久发布| 欧美黑人多人双交| 欧美精品免费看| 欧美喷潮久久久xxxxx| 欧美理论视频| 欧美激情综合五月色丁香| 欧美绝品在线观看成人午夜影视| 欧美成人一品| 欧美电影打屁股sp| 欧美激情第1页| 欧美日韩亚洲一区三区| 欧美色区777第一页| 国产精品一区二区欧美| 国产视频自拍一区| 激情文学一区| 亚洲精品一线二线三线无人区| 日韩亚洲在线| 亚洲欧美亚洲| 久久综合伊人77777蜜臀| 欧美va天堂在线| 亚洲高清免费| 在线视频欧美日韩| 香蕉av777xxx色综合一区| 欧美专区在线观看一区| 久久色在线播放| 欧美日韩大片| 国产欧美精品xxxx另类| 影音先锋中文字幕一区| 亚洲日本中文| 一本到高清视频免费精品| 亚洲欧美欧美一区二区三区| 久久精品国产亚洲a| 欧美激情免费观看| 99精品视频免费在线观看| 欧美一级免费视频| 欧美黄色成人网| 国产模特精品视频久久久久| 影音先锋成人资源站| 中文在线资源观看网站视频免费不卡| 午夜天堂精品久久久久| 欧美激情网友自拍| 亚洲夜晚福利在线观看| 久久免费视频在线观看| 欧美三级在线视频| 激情欧美一区二区三区| 一本色道久久88综合亚洲精品ⅰ| 欧美在线免费视屏| 欧美激情精品久久久久久黑人| 亚洲视频一区在线观看| 久久久人成影片一区二区三区观看 | 日韩午夜免费| 久久精视频免费在线久久完整在线看 | 另类图片综合电影| 亚洲视频每日更新| 欧美电影打屁股sp| 在线不卡视频| 欧美一区二区三区免费大片| 亚洲国产片色| 久久久久9999亚洲精品|