關於class的學習總結

2021-09-18 04:53:31 字數 3837 閱讀 4246

類的課程學習到此就告一段落,總的說來類還是挺容易上手的,就是有很多的理論,這些理論簡而言之就是一些編寫**的規則,理解清楚後一切都不是問題。
下面我就著重說一下關於class的學習總結

一、 定義

class與struct大體上的使用方法相同,只是class中的資料預設為private(私有),而struct預設為public(公有)。其目的是為了保護資料。例如:

class x
二、 this指標

這玩意咋說呢我是感覺用處不大,但是有些地方不用它還真不好弄,我就稍微拉拉它的一些用處吧。

1. 區分與區域性變數重名的資料成員。

2. 返回當前型別。(我很多時候使用這個功能)

3. 獲取當前物件的位址。

使用方法**如下:

class x

x& add(const x& a)

void copy(const x& a)

};

知識點:加入我們定義乙個class x,則x類的this指標的型別是x*。this指標是個常量,含有當前實施呼叫的物件的位址。不能改變this指標的值,也不能取this指標的位址。

三、 訪問器(getxx)和修改器(setxx)

定義:被用來修改private資料成員的public型別的成員函式被稱為修改器,訪問器同理。

例如以下**:

class x

void setxx(double c)

};

這兩個的函式雖然簡單但不可或缺,可以更好地保護資料,體現其封裝性。同時在修改器中還可以用if判斷語句進行新資料的檢驗,確保有效性。

四、 友元函式

這個東西就好說了,就是在成員函式前加乙個friend。定義的友元函式可以訪問並修改私有的資料成員,不過老師說盡量少用,用會破壞類的封裝性。我感覺也是,本意是隱藏資料再給它弄成「公有」,還有啥個勁。但是有時候調程式總是因為私有成員而出錯的話,不妨弄乙個友元函式,頓時神清氣爽。我一般會把自定義排序函式(cmp)定義成友元函式,不然的話對大量私有資料進行排序會成為乙個不小的問題。

乙個下面有個友元函式的簡單使用希望有助於大家的理解:

class x

friend x add(const x&,const x&);//因為add函式呼叫了私有資料,不設定為友元函式無法訪問。

};//建構函式進行初始化,後面會講到。

x add(const x& a,const x& b)

五、 建構函式與析構函式

這兩個東西是必不可少的,建構函式進行賦初值,而析構函式則負責在銷毀物件後對物件的相關資源進行清理。

先說建構函式

建構函式最起碼有兩個,乙個有引數的與乙個無引數的。(過載函式)

建構函式的名字與類的名字相同,沒有返回型別。

建構函式的初始化列表(盡量使用這個,效率更高)

注意:建構函式的初始化列表位於建構函式的參數列之後,函式體之前。

成員初始化順序與它們在類中定義的順序相同。

盡量避免用某些成員初始化其他成員。

例如:

class x

x(int v):m(v),r(v){}

};

六、 委託建構函式

當乙個類中定義多個建構函式時,其中乙個建構函式可以呼叫另乙個建構函式來完成自己的任務,這就是委託建構函式。不好闡述用**說話吧。

#includeusing namespace std;

class x

x(int aa,int bb):x(aa,bb,0)//(2);呼叫(1)初始化

//x(int aa):x(aa,0,0)//(3);呼叫(1)初始化

x():x(1.1)//(4);呼叫(2)初始化,(2)又呼叫(1)初始化

private:

int a,b,c;

};int main()

注意:顯式呼叫的話析構函式會被執行兩次。

使用**如下:

class x;

x::~x()

八、const成員

const可以限定類中的資料成員,將其設定為常量。const資料成員在建構函式的初始化列表中初始化,一旦初始化後在物件的整個生存期都不可改變。

定義方法為:在資料成員前加const即可。

1.若需要用函式檢視const資料成員,那麼函式前也需要加const。

2.乙個類的物件也可以用const限定,被限定的物件只可以進行訪問,但是不可以進行修改。訪問函式需要加上const。**如下:

int get() const

注意:只有const成員函式才可以被const物件呼叫,const物件不能呼叫非const成員函式,但是非const物件可以呼叫const成員函式。

例如以下**:

class x

x():m(0){}

void set(int v)

int get() const

};……

const x b(5);

b.get();正確

b.set(10);//錯誤const物件的資料無法修改

九、static成員(靜態)

定義:屬於整個類,但不屬於某個物件,乙個類的所有物件都可以訪問這個資料。例如在qq上建立乙個群,可以定義乙個static型別的資料成員,對群裡面的人員計數。

具有以下優勢:

靜態資料成員沒有進入程式的全域性作用域,只是在類作用域中,因而不會與全域性域中的名字產生衝突。

可以實現資料隱藏,靜態成員可以是private成員。

使用**如下:

class object

~object()

int getcount() const

};int object::count=0;

初始化問題:

靜態資料應該在類定義之外初始化,定義時要使用類名字限定靜態成員名,**如下:

int object::count=0;

注意:static成員只能定義一次,一般放在包含成員函式定義的原始檔中。

類中的常量——static const成員

例如:銀行允許建立聯名賬戶,但是最對兩個人,**如下:

class object;

const int object::maxren=2;

static const資料成員的定義和static一樣在類外,但是類外定義時要加const。雖然c++允許整型資料可以在類內定義,但是為了一致性,都在類外定義。

靜態資料的訪問

在類的靜態函式中可以直接訪問靜態資料成員。但是在非成員函式中,可以通過一下兩種方式訪問靜態資料成員。

成員訪問運算子「.」和「->」,通過物件和指標訪問。

用類名字限定的靜態成員名字訪問。

**如下:

class object;

void func(object& obj)

{cout用普通成員函式訪問靜態資料成員。

用靜態成員函式來訪問靜態資料成員。

呼叫方式:

object obj;

obj.getcount();

object::getcount();

關於class 類大小的總結

namespace test class size class b class c public a,public b class d virtual public a class e virtual public a,virtual public b class f void test names...

DIV CSS學習 關於ID和CLASS

div css學習 關於id和class 中國網管論壇 在這裡我們有到id和class,那麼有的朋友就要問了,究竟什麼情況下用id,什麼情況下用class呢?id,表示的是唯一性,並且在這個頁面中只會出現一次,我們用它來表示布局的結構 class,表示一組 類 或乙個具有同樣性質的元素,它們可以共用...

關於struct和class的知識

在c 中,struct可以同class一樣擁有自己的成員,只不過struct成員的預設訪問的是public範圍。如果在struct中定義了建構函式,則預設建構函式 無參建構函式 必須顯式定義才能使用 隱式構造方法是編譯器自動給出的,顯式構造方法是程式設計師自己定義的 否則,在建立此結構體的例項的時候...