c++ 长度可变的int数组类

/************************************************************************
*功能:1 数组元素个数可以在初始化该对象的时候指定
*   2:可以动态玩数组中添加元素
*   3:使用该类时,不用操心动态内存分配、释放问题
* 4:能够像使用数组那样来使用动态数组类对象,如可以通过下标来访问元素。 
****************************************************************************/


#include <iostream> #include <cstring> using namespace std; class CArray { private: int size; int *ptr; public: CArray(int s=0); CArray(const CArray &); void push_back(int v); CArray & operator=(const CArray &); int length(); int &operator[](int i) { return ptr[i]; } ~CArray(); }; int CArray::length() { return size; } //CArray::CArray(int s=0):size(s) CArray::CArray(int s):size(s) { if(s==0) ptr=NULL; else ptr=new int[s]; } CArray::CArray(const CArray & s)//注意参数设置为const,防止意外更改 { if(s.size==0) { size=0; ptr=NULL; return; } ptr=new int[s.size]; memcpy(ptr,s.ptr,sizeof(int)*s.size); size=s.size; } void CArray::push_back(int v) { if(ptr) { int * tempPtr=new int[size+1]; memcpy(tempPtr,ptr,size*sizeof(int)); delete [] ptr; ptr=tempPtr; } else ptr=new int[1]; ptr[size++]=v; } CArray & CArray::operator=(const CArray & s)//注意参数使用const。 { if(s.ptr==ptr) return *this; if(ptr)//一定要注意防止delete空指针 delete []ptr; if(s.ptr) { ptr=new int[s.size]; memcpy(ptr,s.ptr,s.size*sizeof(int)); size=s.size; } else { ptr=NULL; size=0; } return *this; } CArray::~CArray() { if(ptr) delete [] ptr; } int main() { CArray a; for(int i=0;i<5;i++) a.push_back(i); //a[0]=11111; // for(int i=0;i<a.length();i++) // cout<<a[i]<<" "; // cout<<"aaaa\n"; 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; }

 

原文链接: https://www.cnblogs.com/cq0143/p/11300859.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    c++ 长度可变的int数组类

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/300353

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月15日 下午9:21
下一篇 2023年2月15日 下午9:22

相关推荐