C/C++
進(jìn)度條控件
摘要: Style Description
PBS_SMOOTH //平滑
PBS_VERTICAL //垂直
響應(yīng)消息
PBM_DELTAPOS //一個(gè)進(jìn)度條由一個(gè)指定的增量當(dāng)前位置和重繪欄,以反映新的位置。
wParam=(的WPARAM)nIncrement
lParam = 0;
返回原來的位置。
閱讀全文
C++讀寫流
摘要: 和C語言不同,C++對(duì)文件的操作有自己的方法。
C++對(duì)文件的操作主要是通過兩個(gè)類(ofstream---向文件中寫入數(shù)據(jù)。ifstream----從文件中讀取數(shù)據(jù)),通過指定類中的變量取值來達(dá)到對(duì)文件的操作。
ofstream類的構(gòu)造函數(shù)(有好幾個(gè),這個(gè)用的最多)ofstream::ofstream
ofstream( const char* szName, int nMode = ios::out, int nProt = filebuf::openprot )
szName:指定將要打開的文件名
nMode:指定打開的方式,有以下幾種取值
閱讀全文
關(guān)于類的作用域 (全局域 、類域、作用域)
摘要: (1)、成員函數(shù)
成員函數(shù)有一個(gè)非成員函數(shù)不具有的屬性——它的類itsclass 指向成員函數(shù)的指針必須與向其賦值的函數(shù)類型匹配不是兩個(gè)而是三個(gè)方面都要匹配:
1 參數(shù)的類型和個(gè)數(shù)2 返回類型3 它所屬的類類型
例如類screen:short Screen::*ps_Screen = &Screen::_height;
數(shù)據(jù)成員指針在被用來訪問數(shù)據(jù)成員之前必須先被綁定到一個(gè)對(duì)象或指針上
// 所有指向類成員的指針都可以用0 賦值
int (Screen::*pmf1)() = 0;
int (Screen::*pmf2)() = &Screen::height;//或者可以這樣寫:int Screen::*pmf2 = &Screen::height;
注意:靜態(tài)類成員指針是該類的全局對(duì)象和函數(shù),引用的是普通指針
(2)作用域
1.全局域、類域、局部域的區(qū)別
閱讀全文
C++的一些基礎(chǔ)
摘要: 一、類型轉(zhuǎn)換
1、強(qiáng)制類型轉(zhuǎn)換::類型不同,而且不屬于基本數(shù)據(jù)類型(int double...)時(shí),經(jīng)常需要強(qiáng)制類型轉(zhuǎn)換
①、顯示強(qiáng)制類型轉(zhuǎn)換
TYPE b = (TYPE) a;
C++中強(qiáng)制類型轉(zhuǎn)換函數(shù)有4個(gè):
const_cast(用于去除const屬性),
static_cast(用于基本類型的強(qiáng)制轉(zhuǎn)換),
dynamic_cast(用于多態(tài)類型之間的類型轉(zhuǎn)換),
閱讀全文
C/C++內(nèi)存中的數(shù)據(jù)對(duì)齊問題
摘要: 數(shù)據(jù)對(duì)齊,是指數(shù)據(jù)所在的內(nèi)存地址必須是該數(shù)據(jù)長(zhǎng)度的整數(shù)倍。比如DWORD數(shù)據(jù)的內(nèi)存其實(shí)地址能被4除盡,WORD數(shù)據(jù)的內(nèi)存地址能被2除盡。x86 CPU能直接訪問對(duì)齊的數(shù)據(jù),當(dāng)它試圖訪問一個(gè)未對(duì)齊的數(shù)據(jù)時(shí),會(huì)在內(nèi)部進(jìn)行一系列的調(diào)整,這些調(diào)整對(duì)于程序來說是透明的,但是會(huì)降低運(yùn)行速度,所以編譯器在編譯程序時(shí)會(huì)盡量保持?jǐn)?shù)據(jù)對(duì)齊。
閱讀全文
虛函數(shù)和多態(tài) (二)
摘要: 是允許將父對(duì)象設(shè)置成為和一個(gè)或多個(gè)它的子對(duì)象相等的技術(shù),比如Parent:=Child; 多態(tài)性使得能夠利用同一類(基類)類型的指針來引用不同類的對(duì)象,以及根據(jù)所引用對(duì)象的不同,以不同的方式執(zhí)行相同的操作.
c++中多態(tài)更容易理解的概念為
閱讀全文
虛函數(shù)和多態(tài) (一)
摘要: 1、什么是虛函數(shù)?
①、虛函數(shù)必須是基類的非靜態(tài)成員函數(shù)
②、其訪問權(quán)限可以是protected或public。不能是private ,因?yàn)樽宇惱^承時(shí),子類不能訪問。
③、在編譯時(shí)是動(dòng)態(tài)聯(lián)編的::編譯程序在編譯階段并不能確切知道將要調(diào)用的函數(shù),只有在程序執(zhí)行時(shí)才能確定將要調(diào)用的函數(shù),為此要確切知道該調(diào)用的函數(shù),要求聯(lián)編工作要在程序運(yùn)行時(shí)進(jìn)行,這種在程序運(yùn)行時(shí)進(jìn)行聯(lián)編工作被稱為動(dòng)態(tài)聯(lián)編。 動(dòng)態(tài)聯(lián)編規(guī)定,只能通過指向基類的指針或基類對(duì)象的引用來調(diào)用虛函數(shù)
2、定義形式。
virtual 函數(shù)返回值類型 虛函數(shù)名(形參表)
{ 函數(shù)體 }
純虛函數(shù):virtual 函數(shù)名=0
3、虛函數(shù)內(nèi)部機(jī)制。
①、每個(gè)實(shí)例對(duì)象里有自己的指針。
②、虛函數(shù)(Virtual Function)是通過一張?zhí)摵瘮?shù)表(Virtual Table)來實(shí)現(xiàn)的。
③、我們通過對(duì)象實(shí)例的地址得到這張?zhí)摵瘮?shù)表,然后就可以遍歷其中函數(shù)指針,并調(diào)用相應(yīng)的函數(shù)。
閱讀全文
類繼承和子類型 多繼承和虛擬繼承
摘要: 關(guān)于基類,派生類的相關(guān)補(bǔ)充:
1、 派生表中指定的類必須先被定義好,方可被指定為基類。
2、 派生類的前向聲明不能包括其派生表,而只需要類名即可。
3、 缺省的繼承是private。
4、 繼承而來的派生類的虛擬函數(shù)一般加上virtual較好,也可以省略。但基類中一定要聲明為virtual。
5、 對(duì)于基類的靜態(tài)成員,所有派生類對(duì)象都引用基類創(chuàng)建的這個(gè)相同,單一,共享的靜態(tài)成員,而不是創(chuàng)建該派生類的另一個(gè)獨(dú)立的靜態(tài)成員。
6、 友員關(guān)系不會(huì)被繼承,派生類沒有成為“向它的基類授權(quán)友誼的類”的友員。
閱讀全文
深拷貝、淺拷貝 與拷貝構(gòu)造函數(shù)的關(guān)系
摘要: 拷貝即是通常所說的復(fù)制(Copy)或克隆(Clone),對(duì)象的拷貝也就是從現(xiàn)有對(duì)象復(fù)制一個(gè)“一模一樣”的新對(duì)象出來。雖然都是復(fù)制對(duì)象,但是不同的復(fù)制方法,復(fù)制出來的新對(duì)象卻并非完全一模一樣,對(duì)象內(nèi)部存在著一些差異。通常的拷貝方法有兩種,即深拷貝和淺拷貝,那二者之間有何區(qū)別呢?
我的理解是:
1、深拷貝和淺拷貝之間的區(qū)別在于是否復(fù)制了子對(duì)象。
2、如果一個(gè)類擁有資源(堆,或者是其它系統(tǒng)資源),,當(dāng)這個(gè)類的對(duì)象發(fā)生復(fù)制過程的時(shí)候,資源重新分配,這個(gè)過程就是深拷貝,反之對(duì)象存在資源,但復(fù)制過程并未復(fù)制資源的情況視為淺拷貝。
閱讀全文