c++的重要性質:
OOP object oriented programming
property method
member variable,member function
encapsulation
enheritance
polymorphism
overloading
ellipse circle triangle rectangle square
virtual作用?
如果沒有virtual,那么就繼承了基類指針的性質,如果有virtual,那么就指向對
象的類型。虛函數正式為了對“如果以一個基類的指針指向一個派生類的對象,那么
通過該指針只能夠調用基類所定義的成員函數”這條規則反其道而行的設計。
純虛函數作用?
就是在基類中并不實現,但是為了在派生類中使用,就需要分配一個并不執行,但
是還需要繼承的函數。就是純虛函數 virtual function()=0;純虛函數不需要
定義,在派生類中被重新定義。
什么是抽象類?
擁有虛函數的類。抽象類不能產生出對象實體,但是可以擁有指向抽象類的指針,
便于操作抽象類的各個派生類。
虛函數派生下去仍是虛函數,而且可以省略virtual。
虛函數到底有什么作用?
1如果你估計派生類會重新定義一個成員函數,那么你就把基類中的這個函數寫成
virtual
2通過單一指令調用不同函數,就是多態Polymorphism,"ability to asume many
forms"
3虛函數是c++語言polymorphism性質以及動態聯編的關鍵
4既然抽象類中的虛函數不打算被調用,那么就把它設置成純虛函數。
5擁有純虛函數者為抽象類。
6抽象類不能產生出對象實體,但是我們可以擁有指向抽象類的指針,以便于操作抽
象類的各個派生類。
7虛函數派生下去仍是虛函數,可以不寫virtual。
虛函數怎樣工作?
在含有虛函數的類中,編譯器會為它做出一個虛函數表,表中的每一個元素都指向
一個虛函數的地址。
什么是upcasting?
它是向上強制性類型轉換。
class CMyDoc:public CDocument;
CMyDoc mydoc;
(CDocument)mydodc.func();(upcasting)
注意一般不用upcasting。
靜態變量到底是什么?
static double m_rate;
static成員變量不屬于對象的一部分,而是類的一部分,程序可以在沒有誕生任何
對象的時候就處理此種成員變量,但首相你必須初始化它。
static成員變量的初始化不要安排到構造函數中,因為構造函數可以一再被調用;
也不要把初始化安排在頭文件中,因為可能會被嵌入到許多地方。應該在類以外的
任何位置設定其初值。
static變量可以想象成一個全程變量。
static成員函數不需要借助任何對象,可以被調用執行,所以編譯器不會為它暗加
一個this指針。因此static成員函數無法處理類中的non-static成員變量。
static的構造很析夠就相當于全局變量,只是它會在全局函數之前析夠。構造函數
和析夠函數都是以函數為標志的。
error LINK2001:unresolved external symbol""();一般是因為沒有初始化static
的值。
new的好處?
分配對象所需內存空間,并且引發構造函數的執行。
什么是RTTI?
RTTI Runtime Type Information 動態類型識別
就是知道程序執行過程中某個對象是屬于那個類的。
什么是動態生成(Dynamic Creation)?
什么是異樣處理(Exception Handling)?
使用三個expection保留字:
try:其后跟隨一段以{}圈出的程序代碼,exception將在那里被處理。(就是將要處
理的代碼)
catch:其后{},里邊是處理程序。(就是怎樣處理了)
throw:用來產生一個exception。
什么是模板?
template,就是可以重復利用的架構。
template <class T>
T power(T base,int exponent);
這里的T就是可以隨時改變的量。當然這里的T是類的意思,可以是系統定義的類,
也可以是自己定義的類。
這里注意對于,模板,兩個對象如果都使用了同一個模板,在編譯的時候是不知道
的,但是鏈接的時候,連接器就會將他們重復的部分去掉。標準的說就是 鏈接器會
把所有冗余的template碼剔除。在Borland鏈接器里頭稱為smart技術。


