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