模板(范型)的安全数组C++代码
其实吾不喜欢使用范型,因为这个特性很少用到.
有的时候,确实带来无比方便.比如说这里要实现起来,一下子就包括了所有类型.
之后还要改进的问题:
- 对于memset/memcpy之类的直接操作,如何处理?
- 重载+/-/++/--等操作符.还要计算移动.
- 对于多维情况,如何处理?
#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++代码相关推荐
- J2SE5.0新特性之范型编程
J2SE5.0新特性之范型编程 晁岳攀 smallnest@163.com 本章主要参考sun公司文档. C++程序员对范型编程肯定不陌生,尤其在STL大行其道的时候,C#2.0也将实现范型编程的功能 ...
- 【深入kotlin】 - 范型
范型 定义 class A<T>(t:T){var a: Tinit {this.a = t} } ...... var aa = A("kotlin") printl ...
- java数组的协变_Java数组协变与范型不变性
变性是OOP语言不变的大坑,Java的数组协变就是其中的一口老坑.因为最近踩到了,便做一个记录.顺便也提一下范型的变性. 解释数组协变之前,先明确三个相关的概念,协变.不变和逆变. 一.协变.不变.逆 ...
- Java 数组转型和范型
今天写代码遇到一个奇怪的问题,代码结构如下: [java] view plaincopy print? ArrayList<String> list = new ArrayList< ...
- C++ Primer 第十六章 模板与范型编程
16.1 模板定义 模板和c#范型一样,建立一个通用的类或函数,其参数类型和返回类型不具体指定,用一个虚拟的类型来代表,通过模板化函数或类实现代码在的重用. 定义语法是: tem ...
- 分析 C# 2.0 新特性 -- 范型(Generics)
分析 C# 2.0 新特性 -- 范型(Generics) 作者:梁振[MS-MVP] 范型是提高面向对象程序多态性设计衍生的. 1,C# 多态性设计回顾和展望 在引入范型这个概念之前,回顾一下1 ...
- c# getresponsestream返回byte[]_C++模版和C#范型求同存异录(一)sizeof(T)
sizeof(T) 从C++的模板代码往C#代码移植的时候发现了一个小问题. 在C++模板代码中 sizeof(T)是一种有效的写法,最终在会编译器展开成sizeof(int),sizeof(floa ...
- 《设计模式解析》第1章 面向对象范型
第1章 面向对象范型 概述 本章通过和另外一种你熟悉的范型--标准结构化编程相对比,来向你介绍面向对象范型. 面向对象范型的产生是因为使用标准化结构编程,过去的实践面临着挑战.通过清楚地了解这些挑战, ...
- Objective C范型
范型 范型编程是一种程序语言设计范式,它允许程序员在使用强类型的语言编写代码的时候,延迟确定具体的类型. 以Swift代码为例,假如有一个需求是要交换两个int,很容易写出类似代码 func swap ...
- 范型 DAO范型的应用
当你偶然路过这里时,我假定你已经很明白 java 中范型和 DAO 模式了.当然,我也会顺便唠叨几句范型和 DAO 模式,只是它们不会这篇随笔的重点.我早先在 DW 上看到一篇蛮不错的文章 不要重复 ...
最新文章
- Tensorflow中的mnist例子
- 窗体的常用属性和常用事件
- iOS coredata 多表查询
- php直接读取csv文件,php实现的读取CSV文件函数示例
- python 类 对象 方法 应用_Python 定制类与其对象的创建和应用
- matlab db(X R),matlab操作sqlite数据库
- 性能测试oracle瓶颈定位,性能测试难点之瓶颈分析
- 《现代操作系统》读书笔记
- SSM框架整合步骤思路及案例分析
- VSCode好用的插件
- Kali报错SIOCSIFFLAGS:不允许的操作 解决办法
- 统计了300位硬件工程师的工资,我悟了
- 无法使用此产品的安装源,请确认安装源存在,并且您可以访问它
- 10组团队项目-Alpha冲刺-4/6
- 联想企业网盘,为什么让500强企业情有独钟?
- 赖霖枫:我要让身边的人资产超千万
- VMWare增加系统硬盘容量(扩容)的操作方法
- MSN Messenger协议 原作:bhw98
- vector 相关应用
- php ffmpeg 环境搭建,PHPmotion 环境搭建ffmpeg mencoder flvtools as4 64
热门文章
- Iaas,paas,saas区别与联系
- Python与C++引用分析
- 采用open***对两台流量卡arm设备进行通讯(公有云)
- 这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)
- CHIL-SQL-UPDATE 语句
- Atitit 表达式原理 语法分析 原理与实践 解析java的dsl 递归下降是现阶段主流的语法分析方法...
- 安装Exchange2007邮件系统
- 【Netbackup恢复步骤-02】
- 框架学习之Spring 前言
- nginx 启动失败 80端口被占用