其实吾不喜欢使用范型,因为这个特性很少用到.

  有的时候,确实带来无比方便.比如说这里要实现起来,一下子就包括了所有类型.

  之后还要改进的问题:

  1. 对于memset/memcpy之类的直接操作,如何处理?
  2. 重载+/-/++/--等操作符.还要计算移动.
  3. 对于多维情况,如何处理?
#include <iostream>
#include <stdio.h>
#include <stdlib.h>using namespace std;template <class TYPE>
class SafeArray
{
public:SafeArray(const int size) {nSize = size;//new/deletepData = (TYPE*)malloc(sizeof(TYPE)*nSize);//memset(pData, 0, sizeof(int)*nSize);for (int i=0; i<nSize; i++){pData[i] = i;}}~SafeArray(){if (pData != NULL){free(pData);pData = NULL;}}TYPE& operator[](int i){if( i >= nSize ){cout << "索引超过最大值" <<endl; // 返回第一个元素return pData[0];}return pData[i];}private:TYPE*   pData;int  nSize;
};/**
C++中声明办法:
template <class TYPE>
TYPE& SafeArray<TYPE>::operator[](int i)
{if( i > nSize ){GH_LOG_ERROR("out of array range! %d -> %d", nSize, i);// 返回第一个元素return pData[0];}return pData[i];
}
*/int main()
{int array_size = 8;SafeArray<int> test(array_size);cout << "test[2] 的值为 : " << test[2] <<endl;cout << "test[5] 的值为 : " << test[5] <<endl;//应该报错了cout << "test[9] 的值为 : " << test[array_size+1] <<endl;return 0;
}

模板(范型)的安全数组C++代码相关推荐

  1. J2SE5.0新特性之范型编程

    J2SE5.0新特性之范型编程 晁岳攀 smallnest@163.com 本章主要参考sun公司文档. C++程序员对范型编程肯定不陌生,尤其在STL大行其道的时候,C#2.0也将实现范型编程的功能 ...

  2. 【深入kotlin】 - 范型

    范型 定义 class A<T>(t:T){var a: Tinit {this.a = t} } ...... var aa = A("kotlin") printl ...

  3. java数组的协变_Java数组协变与范型不变性

    变性是OOP语言不变的大坑,Java的数组协变就是其中的一口老坑.因为最近踩到了,便做一个记录.顺便也提一下范型的变性. 解释数组协变之前,先明确三个相关的概念,协变.不变和逆变. 一.协变.不变.逆 ...

  4. Java 数组转型和范型

    今天写代码遇到一个奇怪的问题,代码结构如下: [java] view plaincopy print? ArrayList<String> list = new ArrayList< ...

  5. C++ Primer 第十六章 模板与范型编程

    16.1 模板定义     模板和c#范型一样,建立一个通用的类或函数,其参数类型和返回类型不具体指定,用一个虚拟的类型来代表,通过模板化函数或类实现代码在的重用.     定义语法是:    tem ...

  6. 分析 C# 2.0 新特性 -- 范型(Generics)

    分析 C# 2.0 新特性 -- 范型(Generics) 作者:梁振[MS-MVP]   范型是提高面向对象程序多态性设计衍生的. 1,C# 多态性设计回顾和展望 在引入范型这个概念之前,回顾一下1 ...

  7. c# getresponsestream返回byte[]_C++模版和C#范型求同存异录(一)sizeof(T)

    sizeof(T) 从C++的模板代码往C#代码移植的时候发现了一个小问题. 在C++模板代码中 sizeof(T)是一种有效的写法,最终在会编译器展开成sizeof(int),sizeof(floa ...

  8. 《设计模式解析》第1章 面向对象范型

    第1章 面向对象范型 概述 本章通过和另外一种你熟悉的范型--标准结构化编程相对比,来向你介绍面向对象范型. 面向对象范型的产生是因为使用标准化结构编程,过去的实践面临着挑战.通过清楚地了解这些挑战, ...

  9. Objective C范型

    范型 范型编程是一种程序语言设计范式,它允许程序员在使用强类型的语言编写代码的时候,延迟确定具体的类型. 以Swift代码为例,假如有一个需求是要交换两个int,很容易写出类似代码 func swap ...

  10. 范型 DAO范型的应用

    当你偶然路过这里时,我假定你已经很明白 java 中范型和 DAO 模式了.当然,我也会顺便唠叨几句范型和 DAO 模式,只是它们不会这篇随笔的重点.我早先在 DW 上看到一篇蛮不错的文章 不要重复 ...

最新文章

  1. Tensorflow中的mnist例子
  2. 窗体的常用属性和常用事件
  3. iOS coredata 多表查询
  4. php直接读取csv文件,php实现的读取CSV文件函数示例
  5. python 类 对象 方法 应用_Python 定制类与其对象的创建和应用
  6. matlab db(X R),matlab操作sqlite数据库
  7. 性能测试oracle瓶颈定位,性能测试难点之瓶颈分析
  8. 《现代操作系统》读书笔记
  9. SSM框架整合步骤思路及案例分析
  10. VSCode好用的插件
  11. Kali报错SIOCSIFFLAGS:不允许的操作 解决办法
  12. 统计了300位硬件工程师的工资,我悟了
  13. 无法使用此产品的安装源,请确认安装源存在,并且您可以访问它
  14. 10组团队项目-Alpha冲刺-4/6
  15. 联想企业网盘,为什么让500强企业情有独钟?
  16. 赖霖枫:我要让身边的人资产超千万
  17. VMWare增加系统硬盘容量(扩容)的操作方法
  18. MSN Messenger协议 原作:bhw98
  19. vector 相关应用
  20. php ffmpeg 环境搭建,PHPmotion 环境搭建ffmpeg mencoder flvtools as4 64

热门文章

  1. Iaas,paas,saas区别与联系
  2. Python与C++引用分析
  3. 采用open***对两台流量卡arm设备进行通讯(公有云)
  4. 这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)
  5. CHIL-SQL-UPDATE 语句
  6. Atitit 表达式原理 语法分析 原理与实践 解析java的dsl  递归下降是现阶段主流的语法分析方法...
  7. 安装Exchange2007邮件系统
  8. 【Netbackup恢复步骤-02】
  9. 框架学习之Spring 前言
  10. nginx 启动失败 80端口被占用