C 模板 37 類模板練習 自定義陣列類

2021-10-08 06:37:03 字數 2018 閱讀 2148

到這裡,模板相關基本學習完,現在來利用模板類寫乙個**例子。這個例子就是自定義乙個陣列模板類,需要實現陣列的一些常用操作。例如拷貝,有參構造,查詢,刪除等。

1.自定義陣列類需求

模板案例描述:實現乙個通用的陣列類,要求如下

1)可以對內建資料型別以及自定義資料型別的資料進行儲存

2)將陣列中的資料儲存到堆區

3)建構函式中可以傳入陣列的容量

4)提供對應得拷貝建構函式以及operator=防止淺拷貝問題

5)提供尾插法和尾刪法對陣列中的資料進行增加和刪除

6)可以通過下標的方式訪問陣列中的元素

7)可以獲取陣列中當前元素個數和陣列的容量

2.實現有參構造,拷貝構造,operater=過載 和析構函式

乙個陣列,裡面有這麼幾個屬性,陣列容量,陣列元素個數,陣列本身記憶體位址,這幾個資料都是定義私有型別,提供有參構造,讓使用者可以構造出這個陣列物件。下面是有參構造和拷貝構造和析構函式還有operator=過載的**

在前面類模板中成員函式建立有這個主意問題,最好的辦法就是把類模板寫在乙個hpp的檔案中,不要拆開寫成多個檔案。

myarray.hpp**如下

#include #include using namespace std;

template class myarray

// 拷貝構造

myarray(const myarray& arr)

}// operate= 過載函式

myarray& operator=(const myarray& arr)

// 做深拷貝

this->m_capacity = arr.m_capacity;

this->m_size = arr.m_size;

this->paddress = new t[arr.m_capacity];

for(int i=0; i < this->m_size; i++)

return *this;

}//析構函式

~myarray()

}private:

t * paddress; // 指標,維護是指向堆區中真實開闢出來陣列

int m_capacity; // 陣列的容量

int m_size; // 陣列大小(元素個數)

};

3.測試有參構造和析構函式來寫乙個測試**,測試我們的有參構造和析構是否被正常呼叫

#include #include #include "myarray.hpp"

using namespace std;

void test01()

int main()

執行

接下來,測試下拷貝構造和operator=函式

#include #include #include "myarray.hpp"

using namespace std;

void test01()

int main()

執行看看是否顯示拷貝構造呼叫

還有乙個operator=的函式過載測試

C 自定義類模板

c 中有乙個重要特性,那就是模板型別。類似於objective c中的泛型。c 通過類模板來實現泛型支援。在引入typename之前,class關鍵字早已在模板申明中被使用。在typename關鍵字引入後,可以用它來替代class關鍵字。如 template和 template相同 1 定義乙個te...

php自定義模板練習

php的模板類似於jsp中的標籤,在網上找到乙個自定義模板的例子,照著敲了一下,終於調出來了。記錄如下 以下來自 http wenku.baidu.com view 73324c7202768e9951e73845.html 中的例項部分 1 建立模板類,檔名 mytpl class.php 內容如...

C 基礎學習筆記 自定義陣列模板類

內容 陣列模板類 修改 2017年9月13上午 成員方法中delete未正確匹配 改進 2017年9月13晚上 陣列總量改為固定 define crtdbg map alloc include include include arraytemplate.h include arr.h include...