通过自定义的 Array 类来实现变长数组
Posted 祥云湾
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过自定义的 Array 类来实现变长数组相关的知识,希望对你有一定的参考价值。
有些较老的编译器不支持 变长数组 ,例如 VC6.0、VS2010 等,这有时候会给编程带来不便,下面我们通过自定义的 Array 类来实现变长数组。具体的例子来说明显式定义拷贝构造函数的必要性。#include <iostream>
#include <cstdlib>
using namespace std;
//变长数组类
class Array
public:
Array(int len);
Array(const Array &arr); //拷贝构造函数
~Array();
public:
int operator[](int i) const return m_p[i]; //获取元素(读取)
int &operator[](int i) return m_p[i]; //获取元素(写入)
int length() const return m_len;
private:
int m_len;
int *m_p;
;
Array::Array(int len): m_len(len)
m_p = (int*)calloc( len, sizeof(int) );
Array::Array(const Array &arr) //拷贝构造函数
this->m_len = arr.m_len;
this->m_p = (int*)calloc( this->m_len, sizeof(int) );
memcpy( this->m_p, arr.m_p, m_len * sizeof(int) );
Array::~Array() free(m_p);
//打印数组元素
void printArray(const Array &arr)
int len = arr.length();
for(int i=0; i<len; i++)
if(i == len-1)
cout<<arr[i]<<endl;
else
cout<<arr[i]<<", ";
int main()
Array arr1(10);
for(int i=0; i<10; i++)
arr1[i] = i;
Array arr2 = arr1;
arr2[5] = 100;
arr2[3] = 29;
printArray(arr1);
printArray(arr2);
return 0;
以上是关于通过自定义的 Array 类来实现变长数组的主要内容,如果未能解决你的问题,请参考以下文章