C++ 簡單實現陣列類泛型程式設計示例
原創:
C++ 簡單實現陣列類泛型程式設計示例
1、使用模板來實現泛型程式設計
2、本陣列應該能夠儲存各種基礎型別,各種複雜的類型別
3、應該實現部分運算子過載
其實運算子過載滿滿的都是套路。
程式碼如下:
C++ 簡單實現陣列類泛型程式設計示例
1、使用模板來實現泛型程式設計
2、本陣列應該能夠儲存各種基礎型別,各種複雜的類型別
3、應該實現部分運算子過載
其實運算子過載滿滿的都是套路。
程式碼如下:
點選(此處)摺疊或開啟
-
模板類實現:
-
/*************************************************************************
-
> File Name: arra.cpp
-
> Author: gaopeng QQ:22389860 all right reserved
-
> Mail: gaopp_200217@163.com
-
> Created Time: Mon 10 Apr 2017 08:28:01 AM CST
-
************************************************************************/
-
-
#include<iostream>
-
#include <stdlib.h>
-
#include <string.h>
-
using namespace std;
-
-
-
template <typename T>
-
class myarray
-
{
-
private:
-
T* array;
-
unsigned int lenth;
-
public:
-
myarray();
-
myarray(unsigned int len);
-
myarray(const myarray& a);
-
myarray& operator=(const myarray& b);
-
T& operator[](int ind);
-
~myarray();
-
};
-
-
-
-
-
template <typename T>
-
myarray<T>::~myarray()
-
{
-
if(this->array != NULL)
-
{
-
delete [] this->array;
-
this->array = NULL;
-
}
-
-
}
-
-
-
template <typename T>
-
myarray<T>::myarray()
-
{
-
this->array = NULL;
-
this->lenth = 0;
-
}
-
-
template <typename T>
-
myarray<T>::myarray(unsigned int len)
-
{
-
this->array = new T[len];
-
this->lenth = len;
-
memset(this->array,0,sizeof(T)*len);
-
}
-
template <typename T>
-
myarray<T>::myarray(const myarray<T>& a)
-
{
-
int i;
-
this->lenth = a.lenth;
-
this->array = new T[a.lenth];
-
memset(this->array,0,sizeof(T)*a.lenth);
-
for(i=0;i<a.lenth;i++)
-
{
-
*(this->array+i) = *(a.array+i);
-
}
-
}
-
-
template <typename T>
-
myarray<T>& myarray<T>::operator=(const myarray<T>& a)
-
{
-
if(this->array != NULL)
-
{
-
delete [] this->array;//呼叫類的解構函式不能用free
-
this->array = NULL;
-
}
-
this->array = new T[a.lenth];
-
this->lenth = a.lenth;
-
-
for(int i=0;i<a.lenth;i++)
-
{
-
*(this->array+i) = *(a.array+i);//元素物件複製呼叫物件的=運算子過載
-
}
-
-
return *this;
-
}
-
-
template <typename T>
-
T& myarray<T>::operator[](int ind)
-
{
-
if(ind>=this->lenth)
-
{
-
exit(10);
-
}
-
return *(this->array+ind);
- }
點選(此處)摺疊或開啟
-
測試
-
/*************************************************************************
-
> File Name: main.cpp
-
> Author: gaopeng QQ:22389860 all right reserved
-
> Mail: gaopp_200217@163.com
-
> Created Time: Mon 10 Apr 2017 08:31:57 AM CST
-
************************************************************************/
-
-
#include<iostream>
-
#include<stdlib.h>
-
#include<string.h>
-
#include"arra.cpp"
-
-
using namespace std;
-
-
class test
-
{
-
private:
-
int a;
-
int b;
-
char* myc;
-
public:
-
test()
-
{
-
a = 0;
-
b = 0;
-
myc = NULL;
-
}
-
test(const test& a)
-
{
-
this->a = a.a;
-
this->b = a.b;
-
this->myc = (char*)calloc(strlen(a.myc)+1,0);
-
strcpy(this->myc,a.myc);
-
}
-
-
-
friend ostream& operator<<(ostream& out,test& a)
-
{
-
out<<a.a<<endl;
-
out<<a.b<<endl;
-
cout<<a.myc;
-
return out;
-
}
-
~test()
-
{
-
if(myc != NULL)
-
{
-
free(myc);
-
myc = NULL;
-
}
-
}
-
-
test& operator=(const test& a)
-
{
-
if(this->myc != NULL)
-
{
-
free(this->myc);
-
this->myc = NULL;
-
}
-
this->a = a.a;
-
this->b = a.b;
-
this->myc = (char*)calloc(strlen(a.myc)+1,0);
-
strcpy(this->myc,a.myc);
-
return *this;
-
}
-
-
test& operator=(const char* a)
-
{
-
if(this->myc != NULL)
-
{
-
free(this->myc);
-
this->myc = NULL;
-
}
-
if(a == NULL)
-
{
-
this->myc = (char*)calloc(1,0);
-
return *this;
-
}
-
-
this->myc = (char*)calloc(strlen(a)+1,0);
-
strcpy(this->myc,a);
-
return *this;
-
}
-
-
};
-
-
-
-
int main()
-
{
-
myarray<test> a(3); //測試class類陣列
-
a[0] = "asdasd";
-
a[1] = "test";
-
a[2] = "kkkk";
-
-
myarray<int> b(3); //測試int陣列
-
-
b[0] = 1;
-
b[1] = 2;
-
b[2] = 3;
-
-
myarray<char> c(3); //測試char陣列
-
-
c[0] = 'a';
-
c[1] = 'b';
-
c[2] = 'c';
-
-
myarray<test> d = a;//測試myarray複製建構函式
-
-
for(int i=0;i<3;i++)
-
{
-
cout<<a[i]<<endl;
-
cout<<d[i]<<endl;
-
}
-
-
for(int i=0;i<3;i++)
-
{
-
cout<<b[i]<<endl;
-
}
-
for(int i=0;i<3;i++)
-
{
-
cout<<c[i]<<endl;
-
}
-
- }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7728585/viewspace-2136044/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 泛型程式設計(模板函式,模板類的套用) Myvector 具體案例 實現可存放int 陣列 char陣列 類物件陣列 以及一組指標泛型程式設計函式陣列物件指標
- java泛型之泛型陣列。Java泛型陣列
- c++ 泛型程式設計 之 TypeListsC++泛型程式設計
- Rust 程式設計,實現簡單的佇列Rust程式設計佇列
- c++ 泛型 程式設計 之 Functor 設計模式C++泛型程式設計設計模式
- java 泛型陣列Java泛型陣列
- 在C語言中實現泛型程式設計C語言泛型程式設計
- C語言如何實現泛型程式設計?C語言泛型程式設計
- .NET泛型程式設計簡介 (轉)泛型程式設計
- 前端中的簡單程式設計題-陣列(2)前端程式設計陣列
- 前端中的簡單程式設計題-陣列(1)前端程式設計陣列
- 泛型程式設計在非C++語言中的實現之探討 (轉)泛型程式設計C++
- C++ primer 模板與泛型程式設計C++泛型程式設計
- 其實泛型很簡單泛型
- 泛型陣列列表ArrayList泛型陣列
- 泛型程式設計泛型程式設計
- 【C++ 泛型程式設計01:模板】函式模板與類别範本C++泛型程式設計函式
- c++ 泛型程式設計 之 自動生成程式碼C++泛型程式設計
- C++ 泛型程式設計基礎:模板通識C++泛型程式設計
- ajax 提交陣列 泛型集合陣列泛型
- 【ITOO】--陣列、集合、泛型解析陣列泛型
- java 泛型程式設計Java泛型程式設計
- c++簡單程式設計-3C++程式設計
- NumPy迭代陣列的實現示例陣列
- javascript實現二維陣列實現簡單介紹JavaScript陣列
- C語言/C++程式設計學習:棧的程式碼實現之陣列方案C語言C++程式設計陣列
- GO語言泛型程式設計實踐Go泛型程式設計
- 剖析C++多型:用C實現簡單多型C++多型
- 泛型、陣列列表與協變泛型陣列
- 泛型最佳實踐:Go泛型設計者教你如何用泛型泛型Go
- 陣列的七個 API 的簡單實現陣列API
- 如何實現簡單的位陣列(bit array)陣列
- 十、GO程式設計模式 : 泛型程式設計Go程式設計設計模式泛型
- C++程式設計實現C++程式設計
- 簡單易懂的 Go 泛型使用和實現原理介紹Go泛型
- Go泛型草案設計簡明指南Go泛型
- java筆記-two-java泛型程式設計(簡記)Java筆記泛型程式設計
- TypeScript實現陣列相關簡單演算法TypeScript陣列演算法