C++模板数组类
2007-11-04 09:02
218 查看
//outhor:ouskylin
//data:11/04/2007
//
///~:-----Begin
template<class Type,int Size>
class Array{
private:
Type * ptr;
int size;
Type oldValue; //保存一个越界访问发生时的老值
bool slopOver; //越界访问发生时的标记
int overIndex; //存放当越界访问时候的下越界标值
public:
Array():size(Size>0?Size:1),oldValue(NULL),slopOver(false),overIndex(NULL){
//为什么我把这个动态分配放在初始化列表中会出现内存耗尽?/
//唯一的可解释是初始化顺序的原因吗?在还没初始化size时候是一个非常大的随机值?
//但是我试验了,不是初始化顺序的原因,那又会是什么呢?本杰恩先生,请告诉我!
ptr=new Type[size];
for(int n=0;n<size;++n){
ptr
=NULL;
}
}
Type& operator [](int n){
if(n<size&&n>=0){
slopOver=false;
return ptr
;
}
else if(n>=size){
oldValue=ptr[size-1];
overIndex=n;
slopOver=true;
return ptr[size-1];
}
else {
oldValue=ptr[0];
overIndex=n;
slopOver=true;
return ptr[0];
}
}
//是否发生越界访问
bool isSlopOver()const{
return slopOver;
}
//如果关心越界访问的发生,获得那个已经保存的老值
Type getOldValue()const{
return oleValue;
}
//返回一个 当越界发生时候的错误下标
int getOverIndex(){
return overIndex;
}
virtual ~Array(){
if(size>1)
delete [] ptr;
else
delete ptr;
}
};
///~:----end
//data:11/04/2007
//
///~:-----Begin
template<class Type,int Size>
class Array{
private:
Type * ptr;
int size;
Type oldValue; //保存一个越界访问发生时的老值
bool slopOver; //越界访问发生时的标记
int overIndex; //存放当越界访问时候的下越界标值
public:
Array():size(Size>0?Size:1),oldValue(NULL),slopOver(false),overIndex(NULL){
//为什么我把这个动态分配放在初始化列表中会出现内存耗尽?/
//唯一的可解释是初始化顺序的原因吗?在还没初始化size时候是一个非常大的随机值?
//但是我试验了,不是初始化顺序的原因,那又会是什么呢?本杰恩先生,请告诉我!
ptr=new Type[size];
for(int n=0;n<size;++n){
ptr
=NULL;
}
}
Type& operator [](int n){
if(n<size&&n>=0){
slopOver=false;
return ptr
;
}
else if(n>=size){
oldValue=ptr[size-1];
overIndex=n;
slopOver=true;
return ptr[size-1];
}
else {
oldValue=ptr[0];
overIndex=n;
slopOver=true;
return ptr[0];
}
}
//是否发生越界访问
bool isSlopOver()const{
return slopOver;
}
//如果关心越界访问的发生,获得那个已经保存的老值
Type getOldValue()const{
return oleValue;
}
//返回一个 当越界发生时候的错误下标
int getOverIndex(){
return overIndex;
}
virtual ~Array(){
if(size>1)
delete [] ptr;
else
delete ptr;
}
};
///~:----end
相关文章推荐
- 基于数组的循环队列(C++模板实现)
- C++ 指针,常量,数组,函数,模板,内联等混淆概念
- c++ 模板数组的引用
- C++获取数组的长度(用模板可以实现)
- C++第14周项目模板【项目3-数组类模板】
- 用c++模板实现 线性表(数组表示)
- 动态分配数组C++模板
- C++ 自定义动态数组模板
- c++实践参考:数组类模板
- c++ 模板学习笔记:函数模板实现数组通用排序和遍历打印(权哥)
- 数据结构图文解析之:数组、单链表、双链表介绍及C++模板实现
- c++ 模板学习笔记:用数组和类模板模拟通用栈(权哥)
- [置顶] c++ 函数模板重载(数组和指针 一级指针和二级指针)
- C/C++ 指针数组与数组指针、函数指针与指针函数、模板函数与函数模板、类模板与模板类区别
- C++模板数组实现有序数组的排列合并算法
- C++模板参数为数组
- 我的C++成长之路(-) 学习阶段 -02 函数、模板、数组的操作
- C++中利用模板求数组长度的代码
- c++利用循环数组建立FIFO模板队列
- 有序数组的合并 c++模板实现