C++ 可变长数组类的实现
来源:互联网 发布:南京软件科技大学2016 编辑:程序博客网 时间:2024/05/16 11:47
涉及到构造函数,析构函数,复制构造函数,运算符=, [ ] 的重载等。
#include <iostream>using namespace std;class CArray{public: CArray( int s = 0 );CArray( CArray &a);~CArray();void push_back(int i);CArray& operator= (const CArray &a);int& operator[](int i);int length();private:int *ptr;int size;};CArray::CArray( int s ): size(s){if( s==0 )ptr = NULL;elseptr = new int[s];}CArray::~CArray(){if(ptr)delete[] ptr;}CArray::CArray( CArray &a ){if( !a.ptr){ptr = NULL;size = 0;return;}ptr = new int[a.size];size = a.size; memcpy(ptr, a.ptr, sizeof(int) * size);}void CArray::push_back( int i ){if(ptr){int *tmpPtr = new int[size+1];memcpy(tmpPtr,ptr,sizeof(int)*size);delete[] ptr;ptr = tmpPtr;}else{ptr = new int[1];}ptr[size++] = i;}CArray& CArray::operator= (const CArray &a){if(ptr == a.ptr)return *this;if(a.ptr == NULL){if(ptr)delete[] ptr;ptr = NULL;size = 0;return *this;}if(size < a.size){if(ptr)delete[] ptr;ptr = new int[a.size];}memcpy(ptr, a.ptr, sizeof(int) * a.size);size = a.size;return *this;}int& CArray::operator[](int i){return ptr[i];}int CArray::length(){return size;}int main(){CArray a;for(int i=0; i<5; ++i)a.push_back(i);CArray a2, a3;a2=a;for(int i=0; i<a.length(); ++i)cout << a2[i] << " ";a2 = a3;for(int i=0; i<a2.length(); ++i){cout << a2[i] << " ";}cout << endl;a[3] =100;CArray a4(a);for(int i=0; i<a4.length(); ++i)cout << a4[i] << " ";return 0;}
0 0
- C实现可变长数组
- C++ 可变长数组类的实现
- 实现可变长数组的数组-征服C指针
- Linux c 的可变长数组
- 可变长数组的 OO 实现
- 可变长的数组
- 056day(可变长整型数组的实现)
- C语言 数据结构 可变长数组 array_list
- C语言 可变长参数函数的实现
- c语言可变数组的实现
- 运算重载实现可变长数组
- C语言可变长参数实现“多态”
- C,C++可变长参数实现
- C语言可变长参数实现原理
- C语言可变长参数实现原理
- C语言柔性数组(可变长数组)
- 可变长数组
- 可变长数组
- Uncaught SecurityError: Failed to execute 'replaceState' on 'History':解决方案
- PHP如何实现异步数据调用
- 输出1~1000的完数(1不是完数)
- Oracle SQL收集
- 3.1.2 进程间通信
- C++ 可变长数组类的实现
- 分数类的雏形
- 3.1.3 网络编程
- 动态添加class属性
- 格式: echo -e "\033[字背景颜色;字体颜色m字符串\033[0m"
- Java虚拟机工作原理详解
- 中值滤波matlab
- 拆箱装箱
- 对casper源码的一次改动