数组模板类的创建
文章目錄
- 1 數組模板類的創建
- 1.1 創建數組類
1 數組模板類的創建
1.1 創建數組類
開發一個數組類解決原生數組的安全性問題:
- 提供函數獲取數組長度。
- 提供函數獲取數組元素。
- 提供函數設置數組元素。
棧版本:
Array.h:
#ifndef _ARRAY_H_ #define _ARRAY_H_#include <stdexcept>using namespace std;template < typename T, int N > class Array {T m_array[N]; public:int length() const;bool set(int index, T value);bool get(int index, T& value);T& operator[] (int index);T operator[] (int index) const;virtual ~Array(); };template < typename T, int N > int Array<T, N>::length() const {return N; }template < typename T, int N > bool Array<T, N>::set(int index, T value) {bool ret = (0 <= index) && (index < N);if( ret ){m_array[index] = value;}return ret; }template < typename T, int N > bool Array<T, N>::get(int index, T& value) {bool ret = (0 <= index) && (index < N);if( ret ){value = m_array[index];}return ret; }template < typename T, int N > T& Array<T, N>::operator[] (int index) {if( (0 <= index) && (index < N) ){return m_array[index];}else{throw out_of_range("T& Array<T, N>::operator[] (int index)");} }template < typename T, int N > T Array<T, N>::operator[] (int index) const {if( (0 <= index) && (index < N) ){return m_array[index];}else{throw out_of_range("T Array<T, N>::operator[] (int index) const");} }template < typename T, int N > Array<T, N>::~Array() {}#endifmain.cpp:
#include <iostream> #include <string> #include "Array.h" #include "HeapArray.h"using namespace std;int main() {Array<double, 5> ad;for(int i=0; i<ad.length(); i++){ad[i] = i * i;}for(int i=0; i<ad.length(); i++){cout << ad[i] << endl;}return 0; }堆版本:
HeapArray.h:
main.cpp:
#include <iostream> #include <string> #include "Array.h" #include "HeapArray.h"using namespace std;int main() { HeapArray<char>* pai = HeapArray<char>::NewInstance(10);if( pai != NULL ){HeapArray<char>& ai = pai->self();for(int i=0; i<ai.length(); i++){ai[i] = i + 'a';}for(int i=0; i<ai.length(); i++){cout << ai[i] << endl;}}delete pai;return 0; }參考資料:
總結
- 上一篇: 小霸王全国统一人工服务热线电话多少?
- 下一篇: C++中初始化列表的使用