有時方法可能涉及到兩個物件,這種情況下需要用到this指標。比如stock類中有乙個方法是比較兩個物件的**值,那麼方法定義如下:
const stock & topval(const stock & s) const;
const都是為了表示不對物件中的資料進行修改,但是要讀其中的資料。
this指標是一種特殊的指標,它指向用來調成員函式的物件(this被作為隱藏引數傳遞給方法)。這樣,函式呼叫stock1.topval(stock2)將this設定為stock1物件的位址,使得這個指標可用於topval()方法。一般來說,所有的類方法都將this指標設定為呼叫它的物件的位址。
所以函式原型如下:
const stock & stock::
topval
(const stock & s)
const
total_val是this->total_val的簡寫。this是乙個指標,所以要返回物件,要使用*this。函式宣告那一行最後的乙個const表明這是乙個唯讀函式。
宣告物件陣列的方法與宣告標準型別陣列相同:
stock mystuff[4]; // creat an array of 4 stock objects
這裡的類物件都使用了預設建構函式。如果想使用建構函式初始化陣列,那麼必須為每個元素呼叫建構函式:
const
int stks =4;
stock stocks[stks]
=;
如果類包含多個建構函式也可以對不同的元素使用不同的建構函式。
用類來建立乙個棧(stack)
// stack.h -- class definiton for the stack adt
#ifndef stack_h_
#define stack_h_
typedef
unsigned
long item;
class
stack
;// constant specific to class
item items[max]
;int top;
public
:stack()
;bool
isempty()
const
;bool
isfull()
const
;// push() returns false if stack already is full, true otherwise
bool
push
(const item & item)
;// pop() returns false if stack already is empty, true otherwise
bool
pop(
const item & item)
;}
// stack.cpp -- stack member functions
#include
"stack.h"
stack::
stack()
// create an empty stack
bool stack::
isempy()
const
bool stack::
isfull()
const
bool stack::
push
(const item & item)
else
return
false;}
bool stack::
pop(
const item & item)
else
return
false
;}
c 基礎 類和物件
封裝 繼承 多型 所謂封裝就是使用三個訪問限定符來限制成員變數和成員方法的讀取許可權 1.public 修飾,任意位置可見 2.private 修飾,本類中可見 3.protected 修飾,在本類中和子類類中可見 在這裡說明,成員方法在類內實現,系統會預設其為inline函式,建議以inline函...
C 學習筆記序列之物件和類
下面對c 的物件和類這一章做乙個總結 1.什麼是類?我們理解類,可以直接把它理解為乙個工具,就是使用者用來實現抽象轉換為自定義型別的工具。2.類實現抽象,封裝,資料隱藏 抽象,乙個類就是很多具有相同屬性和方法的抽象 類實現封裝表現在類的設計時把類的公有介面和實現細節分開 資料隱藏表現在實現的細節隱藏...
C 語言學習之物件和類
1.1 抽象和類 1,定義 類是一種將抽象轉換為使用者自定義型別的c 工具,他將資料表示和操縱資料的方法組合成乙個整潔的包。2,類的開發和編寫使用該類的程式 c 程式將介面 類定義 放在標頭檔案中,並將實現 類方法的 放在源 檔案中。2.1 類定義 類宣告的例項 建立名為stock.h的標頭檔案 使...