公司最近有個廣告ts流生成器的工具,需要用到mfc來實現。mfc斷斷續續學了半年,似懂非懂。下週3要催著交demo,頓時感到壓力和緊迫。
於是重拾c++,我一直相信:無論時光怎麼流逝,技術怎麼發展,基礎的東西永遠都不會過時。mfc說白了就是c++各種類的封裝,組合的一種微軟定製的框架。
只要靜下來認真的搞,一定能摸透。
今天開始溫習c++的關鍵語法:封裝,繼承,
過載,多型,虛函式,靜態成員,類模板。
0.封裝和繼承
c++是一種新的程式設計師思維模式的語言,乙個人思維模式的扭轉很是不易。
學習c++的難點就是以物件導向的視角看到看待一切事物。
類及其成員---封裝-->屬性&行為。
繼承-->a(派生) is b(base)
0.1物件的記憶體模型
crect--->
crect a,b;
物件a,b有各自的m_color;但是共享相同的crect::setcolor(int color,crect* this//隱藏指標);
0.2 this指標
class cshape
public:
void setcolor(int color)
//被編譯後其實是:
//void setcolor(int color,cshape*this)
1.過載:
1.1函式的過載 舉例:
void showmessagea(const char* text);
void showmessageb(const char* text,unsigned int type);
一組過載函式有引數型別和個數加以區分。函式的返回值對區分過載函式沒有意義。
1.2運算子過載
#includeclass cadd
cadd(int value)
public:
int m_operand;
};//過載「+」運算子,操作cadd類
cadd operator +(cadd a,int b)
int main(int argc,char*argv)
這程式演示了運算子過載,一般將它定義為某類的友元函式,或定義為類的成員函式。
2.虛函式與多型(polymorphism)
虛函式是為了實現更一般性的呼叫,白話表述:更通用型,父類子類中都有相同的過載函式(函式前有virtual), base *p =dervied; p.fun();//這時呼叫的dervied類的fun();
如果沒有virtual關鍵字,則呼叫的函式由物件指標的型別決定。
多型:相同的指令呼叫不同的函式(父子類中過載的函式,需有virtual關鍵字)
虛函式是實現多型的關鍵。
polymorphism的目的,讓基類**,能夠完成無礙的繼續處理派生類物件
純虛函式:包含它的類是乙個抽象類,不能例項化。
virtual void display()=0;
總結:1.派生類重新定義乙個成員函式,應把基類前加入virtual.
2.多型:單一指令呼叫不同函式。
3.虛函式是實現多型的和動態繫結的關鍵。
4.擁有純虛函式的類為抽象類,不能例項化物件;但可以擁有指向抽象類的指標,以便操作抽象類的各個派生類。
5.虛函式派生下去依然為虛函式,可以省略virtual.
參考資料
[1]:vc++程式設計技術與難點剖析. 辛長安
[2]:深入淺出mfc 侯捷
static在C 中的應用
1 案例描述22 static 語法特性簡介 22.1 修飾變數 22.1.1 靜態全域性變數 22.1.2 靜態區域性變數 22.1.3 靜態資料成員 22.2 修飾函式 22.2.1 靜態函式 22.2.2 靜態成員函式33 應用場合 33.1 將變數 函式的作用域限定在本原始檔中 33.2 儲...
Spread在C 中的應用
spread屬於com類的乙個 元件,相信大家在vb資料庫程式中應用很廣。現在就簡單摘要一下該元件在c 中的應用。首先是把spread新增到工程中,這是普通的.net中對com引用,這裡不再詳細描述,只是說明一下 該控制項位於spread的bin目錄下,名稱為spr32x60.ocx,別引用錯了。再...
多型在C 中的應用
多型在c 中的應用 c 語言經過專門設計,以便不同庫中的基類 與派生類之間的版本控制可以不斷向前發展,同時保持向後相容。這具有多方面的意義。例如,這意味著在基類 中引入與派生類中的某個成員具有相同名稱的新成員在c 中是完全支援的,不會導致意外行為。它還意味著類必須顯式宣告某方法是要重寫乙個繼承方法,...