第10章 類和對象

1.類中的變量叫成員變量,數據成員。類中的函數,叫成員函數,方法

2.類的聲明方法

class cat

{

int a;

int b;

void c()

};

記住最後要有個分號,況且這個聲明並不會分配內存,只是告訴編譯器cat是什麼,用它定義變量時要如何分配內存,就和int一樣

4.類定義對象,比如你想用到cat這個類型的變量,那麼就可以

cat simple;

這樣來定義一個,訪問其內部的成員

simple.a=2;

記住不要直接用cat,併爲其賦值,就像不能直接用int併爲其賦值一樣

5.公有,私有,保護。在類中的成員有3中性質,公有就是表示我們可以在任意情況下訪問,私有表示只能自己訪問,保護表示類的派生類可以訪問。其關鍵字分別人,public,private,protected。比如2中我們沒有關鍵字,則默認爲私有,也就是4中那種訪問方式其實是錯誤的。我們來通過一個例子來具體說明以下公有和私有,至於保護要等到繼承的時候再說:

class cat

{

public:

int getage();

void setage(int mage);

private:

int age;

};//聲明class

int cat::getage()

{

return age;

}//定義class中的getage函數

void cat:setage(int mage)

{

age=mage;

}//定義setage函數

cat simple;

simple.setage(3);

int a=simple.getage()

這裏我們定義了一個cat的對象simple,並調用了simple的公有函數getage和setage。通過類自己的函數來調用它的私有成員,不可以直接調用

 simple.age=4;//這是錯誤的,因爲age是私有的。

6.構造函數和析構函數。構造函數就是在實例化一個類的時候,也就是用類去定義一個變量時,程序就會自動調用構造函數去對對象裏面的成員變量進行初始化。析構函數就是在對象無效或是銷燬時,自動調用,對聲明的內存或變量進行釋放。

7.重新定義以下cat類:

class cat

{

public:

cat(int ini);//這是構造函數,和類同名,可以加參數,也可以不加,但是不能有返回值

~cat();//這是析構函數,開頭是個~符號,並且與類同名,不能有參數和返回值

int getage();

void setage(int age);

private:

int itsage;

};

cat::cat(int ini)//對構造函數定義

{

intsage=ini;

}

cat::~cat()

{

}

如果你再用cat去實例化一個對象時,

cat mycat(5);

這時就會調用構造函數,如果程序結束,對象消除,就會自動調用析構函數

8.按照標準來說,沒一個class,最好是有一個構造函數,並且有了構造函數就必須有析構函數。

9.使用const。我們對於一些類的成員函數,可以使用const來減少錯誤。比如一些讀取變量的函數等一些不需要對類的成員進行改變的方法,最好都用const,來防止誤操作對成員進行改變

10.我們一般把定義放在.h文件中,成爲頭文件,把實現放在.c或.cpp中。

11.內聯。在一個函數定義的前面加上inline,這個函數就是內聯的了。也就是如果你再調用這個函數就不是動態的調用了,相當於你把這個函數直接寫道了調用的地方。比如

class cat

{

public:

int getweight();

private:

int weight;

};

inline int cat:getweight()

{

return itsweight;

}

這樣寫相當於下面

class cat

{

public:

int getweight()

{

return weight;

}

private:

int weight;

};

12.在計算機裏,喜歡把複雜的事物簡單化,也就是分塊。所以爲了聲明覆雜的類,可以先聲明一些簡單的類,然後在類中用其他的類定義成員

13.聲明只是引入一個名,定義才爲其分配內存。而類和全局變量的聲明,也是定義

14.struct和class相似,只不過struct的成員默認是公有的,默認採用公有繼承。如果顯式聲明類的公有和是由部分,類和結構體沒有不同

 

下章見(以上全是個人觀點,如有不當,敬請提出)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章