1. 在C++中,不能被重載的運算符有:安全
- sizeof
- . 成員運算符
- .* 成員指針運算符
- :: 做用域運算符
- ?: 條件運算符
2. C++語言多態性:編譯時多態和運行時多態:函數
- 編譯時多態可經過函數重載和模板實現;
- 運行時多態可經過虛函數實現;
- 實現運行時多態機制稱爲動態綁定;
3. C++中,頭文件引用問題:工具
- #include <> 編譯器只搜索系統目錄,不會搜索本地目錄。好比你本身寫一個頭文件,你用#include <>會出錯。
- #inlude " " 首先搜索本地目錄,若是本地目錄沒有才會搜索系統目錄;
- 能夠把系統的文件 放到當前目錄下 改爲 "" 能夠優先使用;
4. 設a、b、c、d、m、n均爲int型變量,且a=五、b=六、c=七、d=八、m=二、n=2,則邏輯表達式(m=a>b)&&(n=c>d)運算後,n的值爲?this
解析:此題考查運算符優先級和&&使用規則,首先=優先級低於判斷< ,有m=0,&&左側爲false,則不執行右側,所以n的值不變爲2;spa
5. 重載函數是指同一個函數名能夠對應多個函數的實現,編譯器會根據參數個數、參數類型不一樣而自動調用相應的函數;注意函數返回值類型不能做爲重載的判斷條件。指針
6. 運算符重載規則:調試
- 友元函數重載運算符時,由於沒有this指針指向對象,所以參數個數保持和原來同樣,參數列表爲1,說明是1元,爲2說明是2元;若無參,說明重載出錯;
- 成員函數重載時,參數列表爲空,是一元,參數列表是1,爲2元;
7. 循環語句問題:對象
- while(條件)爲false時,循環體不執行;
- do while(),循環體至少執行一次;
- continue只能出如今for/while/do while循環內部,或嵌套在此類循環裏的語句和塊內部,不能在單獨的switch中用continue;
- break用於終止離它最近的循環語句;
8. 構造函數問題:繼承
- 不管是默認構造函數仍是拷貝構造函數,均無返回值;
- 拷貝構造函數的參數可使一個或多個,但左起第一個必須是類的引用對象;
- 若類定義中沒有聲明拷貝構造函數,則編譯器會自動生成一個缺省的拷貝構造函數,可是不會是該類的保護成員;
- 經過拷貝函數能夠將另外一個對象做爲對象的初值;
9. const與define:內存
- const常量有數據類型,而宏常量沒有數據類型。編譯器能夠對const進行類型安全檢查,可是對define只進行字符替換,沒有類型安全檢查,而且在字符替換中可能會產生意料不到的錯誤(邊際效應);
- 有些集成化的調試工具能夠對const進行調試而不能對define進行調試。
- 在C++程序中只使用const常量而不使用define常量,即const常量徹底取代define常量。
10. 在類的const成員函數中,用mutable修飾成員變量後,就能夠修改類的成員變量了~
11. 關於類型轉換:
- dynamic_cast:繼承體系安全向下轉型或跨系轉型;找出某對象佔用內存的起始點;
- static_cast:同舊式C轉型,如int到double,(顯式類型轉換);
- const_cast:去除對象常量性;
- reinterpret_cast:本質依賴於機器,爲運算對象的位模式提供較低層次上的從新解釋,不經常使用,較危險~