(1)重寫和過載的區別
範圍區別:被重寫的函式和重寫的函式在兩個類中,而過載和被過載的函式在同乙個類中
引數的區別:被重寫函式和重寫函式的引數一定相同,但是過載函式和被過載函式的引數列表一定不同
virtual的區別:重寫的基類中被重寫的函式必須要有virtual修飾而過載函式和被過載函式可以被修飾也可以沒有
(2)多型實現原理(動態聯編實現多型)
1.編譯器發現乙個類中有虛函式,則為此類生成虛函式表vtable,虛函式的各表項為指向對應虛函式的指標。
2.編譯器會隱含在此類插入乙個vptr指標指向虛函式表。
3.呼叫類的建構函式的時候編譯器會將vptr指向對應的vtable
4.另外在呼叫類的建構函式的時候指向基礎類的指標此時已變成指向具體類的this指標,從而依靠this指標可以得到正確的vtable
(3)棧實現佇列:
(4)插入排序的實現
void insertsort(int* a,int len)//從小到大
a[k] = tmp;}}
}}(5)關於程式設計規範
程式的可行性,可讀性,可移植性以及可測試性。
(6)c++的引用和c語言的指標有什麼區別
1.引用必須被初始化但是不分配儲存空間。指標不宣告時初始化,在初始化時需要分配儲存空間。
2.引用初始化以後不能被改變,指標可以改變所指的物件。
3.不存在指向空值的引用,但是存在指向空值的指標。
面試 C語言C 小知識總結 1
1 關於宣告和定義的區別 變數可以被宣告多次但是只可以被定義一次 宣告 不分配記憶體空間 int a 這樣既是宣告也是定義 int a 3 定義 extern int a 宣告,通過extern關鍵字宣告變數而不是去定義它 extern int a 3 定義 函式的宣告和定義比較簡單,帶 就是定義,...
c語言知識總結2
一維陣列的定義格式,型別說明符 陣列名 常量表示式 例如 int a 10 c語言中不允許對陣列的大小做動態的定義,即陣列大小不能用變數表示。一維陣列的陣列元素占用的位元組數為4個位元組。幾種錯誤寫法 float a 0 陣列元素大小為0沒有意義 int b 9 不能使用圓括號 int k,a k ...
c 面試知識總結
子類能夠從父類繼承什麼,不能從父類繼承什麼?能 派生類能夠繼承其基類的成員,但是基類必須將它的兩種成員函式區分開來 一類是基類希望其派生類進行覆蓋的函式 另一類是基類希望派生類直接繼承而不要改變的函式 派生類可以繼承定義在基類的成員,但是派生類的成員函式不一定有權訪問從積累繼承而來的成員 關於許可權...