11-1 規劃我們的 Vec 類別
一、Vec 類別需要什麼?
在這個章節裡,我們嘗試自己建立一個簡單版的 vector,一個叫做 Vec 的類別。
我們至少需要以下三項屬性:
-
data: 指向一塊儲存資料的記憶體空間 -
size: 記錄目前 Vec 裡的元素數量 -
capacity: 記錄目前 Vec 裡己向作業系統要求配置的空間大小
接下來考慮需要對外公開的成員函數。
-
Vec(): 建構函數 -
~Vec(): 解構函數 -
size(): 回傳目前 Vec 裡有幾個元素 -
capacity(): 回傳目前 Vec 配置的記憶體大小最多可放幾個元素 -
push_back(val): 將 val 附加在 Vec 的尾端 -
pop_back(): 將 Vec 尾端的元素移除
現在我們可以先完成這個類別的原型宣告如下:
[vec.h]
class Vec {
private:
int *m_data;
int m_size;
int m_capacity;
public:
Vec();
~Vec();
int size();
int capacity();
void push_back(int val);
void pop_back();
};
在成員函數的部分,我們使用 m_ 開頭的名稱,一方面用來提醒自己這是個 data member。一方面也是因為 data member 和 member function 不能用相同的名稱,我們不能有一個叫做 size 的 data member,同時又有一個叫做 size 的 member function。