數(shù)據(jù)成員:
數(shù)據(jù)成員可以分靜態(tài)變量、實(shí)例變量兩種. 靜態(tài)成員:靜態(tài)成員變量是和類相關(guān)聯(lián)的,可以作為類中"共"有的變量(是一個共性的表現(xiàn)),他不依賴特定對象的存在,訪問的時候通過類名加點(diǎn)操作符加變量名來訪問. 實(shí)例成員:實(shí)例成員變量是和對象相關(guān)聯(lián)的,訪問實(shí)例成員變量依賴于實(shí)例的存在. 函數(shù)成員: 方法可以主要分為靜態(tài)方法,實(shí)例方法 靜態(tài)方法:靜態(tài)方法是不屬于特定對象的方法,靜態(tài)方法可以訪問靜態(tài)成員變量,靜態(tài)方法不可以直接訪問實(shí)例變量,可以在實(shí)例函數(shù)調(diào)用的情況下,實(shí)例變量做為參數(shù)傳給靜態(tài)方法。靜態(tài)方法也不能直接調(diào)用實(shí)例方法,可以間接調(diào)用,首先要創(chuàng)建一個類的實(shí)例,然后通過這一特定對象來調(diào)用靜態(tài)方法。 實(shí)例方法:一個實(shí)例方法的執(zhí)行與特定對象關(guān)聯(lián),他的執(zhí)行需要一個對象存在。實(shí)例方法可以直接訪問靜態(tài)變量和實(shí)例變量,實(shí)例方法可以直接訪問實(shí)例方法、和靜態(tài)方法,靜態(tài)方法的訪問方式為類名加點(diǎn)操作符加變量名。當(dāng)多個實(shí)例對象存在時,內(nèi)存中并不是存在美個特定的實(shí)例方法的拷貝,而是,相同類的所有對象都共享每個實(shí)例方法的一個拷貝(實(shí)例方法只占用“一套”空間)。
應(yīng)用場合: 靜態(tài):在構(gòu)造的時候是在堆中生成,在結(jié)束前不會被釋放與改變. 對于大數(shù)據(jù)量的訪問操作,應(yīng)該使用靜態(tài)方法,可以提高性能。 關(guān)于靜態(tài)方法 1、static聲明的變量和方法會被放到內(nèi)存的堆區(qū),即使不調(diào)用也會被分配空間,而非static情況只有在使用的時候才被分配空間,使用完就釋放掉。
當(dāng)一個類的成員被聲明為static時,它可以在這個類的對象被創(chuàng)建之前且沒有任何對象的引用存在時被訪問。因此,static成員多數(shù)被用于全局目的??梢詫⒎椒ê妥兞慷悸暶鳛閟tatic。當(dāng)載入一個類時,一個又一個static塊只執(zhí)行一次。也就是說一些比較通用在系統(tǒng)中應(yīng)用的比較廣泛的函數(shù),一般是采用靜態(tài)方法。而不太通用的函數(shù)則可以使用非靜態(tài)方法,因?yàn)樵谙到y(tǒng)中使用的不是很多,不象通用函數(shù)那么廣泛。實(shí)例化反而比靜態(tài)方法更適合一些,它實(shí)例化所消耗的資源就可能比靜態(tài)方法消耗的資源要少一些。所以一般都是根據(jù)實(shí)際需求來決定是否采用靜態(tài)方法。
對于非結(jié)構(gòu)的static 變量:在h 文件中
class test { public : test(); static int m_stcount; }; ////////////////////////// .cpp 文件中 int test::m_stcount=100; test::test() { //initialize other variable } |
|