《VC++深入講解》 孫鑫 電子工業(yè)出版社。書的第一版是2007年的,我看的是2013年的修訂版。書中介紹的MFC架構(gòu),現(xiàn)在被廣泛認為已經(jīng)過時了,但前幾章對一些概念為何引入講得比較透徹,是一本不錯的有點基礎(chǔ)的菜鳥的入門書籍。

第一章
名詞解釋:
【SDK】Software Development Kit,軟件開發(fā)包
【句柄】在Windows程序中有各種資源(窗口、圖標、光標等),系統(tǒng)在創(chuàng)建這些資源時會為它們分配內(nèi)存,并返回標識這些資源的標識號,即句柄(Handle)。
(HWND)窗口句柄
(HCURSOR)光標句柄
(HBRUSH)畫刷句柄消息隊列:
每個Windows程序?qū)?yīng)一個消息隊列,由Windows系統(tǒng)創(chuàng)建。系統(tǒng)會將鼠標動作、鍵盤動作等消息放到對應(yīng)窗口的消息隊列中,而應(yīng)用程序通過不斷循環(huán),從消息隊列中取出消息,進行相應(yīng)。
Windows消息分“進隊消息”和“不進隊消息”,不進隊消息在系統(tǒng)調(diào)用串口的過程中直接發(fā)送給窗口。代碼部分:
用VS會因為不兼容報錯,則,右鍵項目——>屬性——>配置屬性——>常規(guī)——>字符集:使用多字節(jié)字符集。
第二章
- this指針:
this指針指向?qū)ο蟊旧恚韺ο蟊旧淼牡刂?。例子?/li>
class expamle
{
public:
int x ;
int y ;
example() // 構(gòu)造函數(shù)
{
x = 0;
y = 0;
}
example( int x, int y) // 構(gòu)造函數(shù)的重載
{
this->x = x; // 等式左邊的x是類里面對象的那個x,右邊的是形參
this->y = y; // 等式左邊的y是類里面對象的那個y,右邊的是形參
}
~example() // 析構(gòu)函數(shù)
{
}
};
- 繼承:
構(gòu)造子類的對象的時候,會先構(gòu)造父類的對象,因此,要求構(gòu)造函數(shù)的調(diào)用相一致。當(dāng)子類中不含參數(shù),而父類中含參數(shù)時,傳遞參數(shù)的例子:
class fish : public animal
{
public:
fish() : animal(300,400)
{
// 函數(shù)體
}
};
- 多重繼承
class B: pubic A1, public A2
{
// s……
}
-
虛函數(shù)
子類與父類中如果有函數(shù)重名,則調(diào)用父類函數(shù),因為子類與父類的結(jié)構(gòu)是:
父與子.png
但如果父類中的是虛函數(shù),則調(diào)用子類的。
用一句話概括就是;在基類函數(shù)的前面加上virtual關(guān)鍵字,在派生類中重寫該函數(shù),運行時將會根據(jù)對象的實際類型調(diào)用相應(yīng)的函數(shù)。如果對象類型是派生類就調(diào)用派生類的函數(shù),如果對象類型是基類,就調(diào)用基類的函數(shù)。 - 純虛函數(shù)
例子:
class animal
{
public:
virtual void breath() = 0;
}
- 函數(shù)的覆蓋、隱藏和重載的區(qū)別:
【重載】發(fā)生在同一類中,函數(shù)名相同,參數(shù)不同;
【覆蓋】基類函數(shù)為虛函數(shù),發(fā)生覆蓋的兩個函數(shù)分別位于派生類和基類中,函數(shù)名稱和參數(shù)列表必須相同;
【隱藏】發(fā)生在派生類和基類之間,不屬于覆蓋的情況。
7.引用:
例子:
// 執(zhí)行完后,a和b的值都變成c
// 相當(dāng)于b是a的小名
int a = 5;
int &b = a;
int c = 3;
b = c;
// 更普遍的用法,提高代碼可讀性。
#include <stdio.h>
void change(int& a, int& b) // 交換a和b的取值,有趣的算法。
{
a = a + b;
b = a - b;
a = a - b;
}
void main()
{
int x = 5;
int y = 6;
change(x, y);
cout << “x = ” << x << endl;
cout << “y = ” << y << endl;
}
其他
-
變量命名規(guī)則(微軟公司創(chuàng)建的windous命名約定,匈牙利表示法):
匈牙利變量命名規(guī)則.png - VC++ 的設(shè)計習(xí)慣與程序編譯鏈接的原理與過程
在頭文件中包含類定義以及類成員函數(shù)的聲明;
在源文件中包含類成員函數(shù)的實現(xiàn)。
解決重復(fù)包含都文件的方法:
// 在頭文件開頭加上這句話:
#ifndef ANIMAL_H_H
#define ANIMAL_H_H
class animal
{
……
}
程序編譯鏈接的原理與過程:


