一、什麼是類
類是物件導向程式設計的核心。實際上是新的資料型別,是實現抽象型別的工具。
類是對某一類物件的抽象,物件是某一類的例項。
1、類的一般格式:
class《類名》
private:
《私有資料和函式》
public:
《公有資料和函式》
protected:
《保護型資料和函式》
};//此處(類體最後乙個花括號)一定要有分號
《各個成員函式的實現》
2、類的定義一般分為宣告部分和實現部分。
類宣告class human
public:
//...data
private:
//...data
class是個關鍵字,用其來宣告類
3、類範圍
類的私有成員具有類範圍性質,類的私有成員僅能由類的成員函式訪問。
class c
unsigned getage() const ;
private:
unsigned age;
這個例子中在類宣告中定義了person類的各種成員函式,所以這些函式都是inline型別的。內聯函式通知編譯器用成員函式的函式體替換掉所有對該函式進行宣告呼叫的**,這樣在替換後的**中不再出現對這個函式進行呼叫的**。
class person
public:
inline void setage( unsigned n );
inline unsigned getage() const;
private:
unsigned age;
void person::setage( unsigned n)
age = n;
usigned person::getage() const
return age;
而通過在進行成員函式宣告的時候使用inline關鍵字,可將原本定義在類宣告之外的成員函式強制變成內聯函式。
三、.物件的定義
有三種定義:宣告之後定義、宣告之時定義和一次性定義。但由於「類」比任何資料型別都複雜為了提高程式可讀性,最好在物件的宣告之後定義。
定義格式:
《類名》.《物件名》
類名是使用者已定義過的類的識別符號,物件名可以有乙個和多個,多個時要用逗號分隔。被定義的物件可以是乙個普通物件,乙個陣列和乙個指標物件。
如:cmeter mymeter,*meter,meter[2];
乙個物件的成員就是該物件的類所定義的資料成員和成員函式。
訪問方法:在成員前面加上物件名和成員運算子「.」,其表示方法如下:
《物件名》.《成員變數》
《物件名》.《成員函式》(《引數》)
如:mymeter.m_nprrcent ,mymeter.setpos(2)
需要說明:乙個類物件只能訪問該類的公有型成員,而對於私有型成員則不能訪問。
若物件是乙個指標,則物件成員訪問形式如下:
《物件指標名》->《成員變數》
《物件指標名》.《成員函式》(《引數》)
需要說明:下面兩種表示是等價的
《物件指標名》->《成員變數》
(*《物件指標名》).《成員變數》
四、通過引用傳遞和返回物件
和其他型別的變數一樣,物件既可以採用傳值方式傳遞給函式,也可以採用引用方式作為函式的返回值。除非迫不得已,一般來說應該採用引用方式進行物件的傳遞和返回,而不要採用傳值的方式來進行。這是因為通過傳值方式來傳遞和返回物件時會降低效率並將面臨物件間的拷貝操作,從而使資料增大,浪費記憶體。而採用引用方式,則完全可以避免上述弊病。
五、建構函式和析構函式
a. 建構函式:
c++中的類需要定義與類名相同的特殊成員函式時,這種與類名相同的成員函式叫做建構函式;
建構函式可以在定義的時候有引數;
建構函式沒有任何返回型別。
建構函式的呼叫: 一般情況下,c++編譯器會自動的呼叫建構函式。特殊情況下,需要手工的呼叫建構函式。
class test
public:
//建構函式
test()
b. 析構函式:
c++中的類可以定義乙個特殊的成員函式清理物件,這個特殊的函式是析構函式;
析構函式沒有引數和沒有任何返回型別;
析構函式在物件銷毀的時候自動呼叫;
析構函式呼叫機制: c++編譯器自動呼叫。
class test
~test()
六、const型別引數物件引用
通常,如果乙個物件通過引用方式傳到函式f中,而函式f又不會通過修改物件的資料成員的值改變該物件的狀態,那麼,最好將f的引數標記為const,可以預防物件引數的誤寫,同時有些編譯器還可以對這種情況進行一些優化。
class c
private:
string name;
函式setname的string型別引數n標記為const,表明setname不會改變n,只將n賦值給資料成員name。
七、const成員函式
class c
int get() const
private:
int num;
這個例子中,由於get成員函式不需要改變類c的任何資料成員,因此將get成員函式標記為const,注意,const關鍵字出現在引數列表與其函式體之間。
由於get成員函式不更改任何資料成員,因此稱這種型別的函式為唯讀函式。
乙個const成員函式僅能呼叫其他const成員函式,因為const成員函式不允許直接或間接地改變物件的狀態,而呼叫非const成員函式可能會間接地改變物件的狀態。
class c
const string& get() const
private:
string name;
在成員函式set中,因為set不改變string型別引數n,n被標記為const。成員函式get返回資料成員name的乙個const型引用,此處的const表明誰也不能通過這個引用來修改資料成員name的值。成員函式get本身被標記為const,因為get不會改變類c唯一的資料成員name的值。
類和物件總結
size medium b 一 基本概念 b size b 類 b 生活中把具有相似特徵和行為的事物分為一類。程式中的類就是乙個模型,為物件的建立做準備。類中包括屬性和方法 屬性 事物的特徵,如顏色 名字 大小等 方法 事物的行為,如名字的獲取 學習行為 pk行為等。b 物件 b 類中某個具體的事物...
類和物件的總結
類和物件的理解 現實世界並沒有類的存在,存在的只有乙個個的物件,如小明,小紅,我的膝上型電腦等,這些物件是具體,客觀存在的 我們可以把那些具有相似特徵的物件歸結為一類,如小明和小紅這兩個人都可以歸為學生這一類 而小紅和我的膝上型電腦有不同點,所以歸納為不同的類,類是抽象的,主觀的。在程式中我們可以定...
c 類和物件總結
話不多說,我們直接進入主題 物件 客觀世界裡的一切事物都可以看作是乙個物件,每乙個物件應當具有屬性 靜態特徵,比如乙個班級,乙個專業,乙個教室 和行為 動態特徵,例如 學習,開會,體育比賽等 兩個要素。物件是由一組屬性和一組行為構成的。類 class 就是物件的型別,代表了某一批物件的共同特性和特徵...