• C++:类模板的应用实现动态数组


    #include
    using namespace std;
    #pragma once
    template
    class MyArray
    {
        public:
            explicit MyArray(int capacity)  //容量
            {
                this->m_Capacity=capacity;
                this->m_Size=0;
                //如果T是对象,那么这个对象必须提供默认的构造函数

                pAddress=new T[this->m_Capacity];  //容量的大小
            }

            //拷贝构造
            MyArray(const MyArray & arr)
            {
                this->m_Capacity=arr.m_Capacity;
                this->m_Size=arr.m_Size;
                this->pAddress=new T[this->m_Capacity];
                for(int i=0;im_Size;i++)
                {
                    this->pAddress[i]=arr.pAddress[i];
                }
            }

            //重载[]操作符arr[0]
            T & operator [](int index)
            {
                return this->pAddress[index];
            }

            //尾插法
            void Push_back(const T & val)
            {
                if(this->m_Capacity==this->m_Size)
                {
                    return;
                }
                this->pAddress[this->m_Size]=val;
                this->m_Size++;
            }

            void Pop_back()
            {
                if(this->m_Size==0)
                {
                    return;
                }
                this->m_Size--;
            }

            int getSize()
            {
                return this->m_Size;
            }

            //析构函数
            ~MyArray()
            {
                if(this->pAddress!=NULL)
                {
                    delete[]this->pAddress;
                    this->pAddress=NULL;
                    this->m_Capacity=0;
                    this->m_Size=0;
                }
            }

        private:
            T *pAddress;   //指向一个堆空间,这个空间存储真正的数据
            int m_Capacity; //容量
            int m_Size;  //大小

    };


    int main(int argc, char *argv[])
    {

        return 0;
    }
     

  • 相关阅读:
    【Unity记录】如何优雅地在Unity中订阅与退订C#事件
    设计模式-04-原型模式
    【OpenCV学习】第1课:加载丶修改丶显示丶保存图像
    NEWCC:新时代的区块链生态新币私募造势平台
    cocos2dx:CCTexture2D注解
    【已解决】IntelliJ IDEA中安装和配置Cloud Toolkit,一键部署服务器
    面试被问到了String相关的几道题,你能答上来吗?
    基于项目工程构建SBOM(软件物料清单)的研究
    【感恩系列】:说点事儿 以及 我把所有的粉丝放到了中国地图上啦~
    python学习05-协程
  • 原文地址:https://blog.csdn.net/qq_63626307/article/details/126844408