类与对象--动态数组类

main.cpp

#include<iostream>
#include<string.h>
#include"array.h"
using namespace std ;
 int main(int argc, char *argv[])
 {
     array ob(4);
     ob.push_array(1);
     ob.push_array(2);
     ob.push_array(2);
     ob.push_array(2);
     ob.push_array(2);
     ob.push_array(2);
     ob.pop_array();
     ob.pop_array();
     int num = ob.array_pos(2);
     ob.print_array();
     cout<<num<<endl;
     return 0;
 }

array.c

#include "array.h"
#include<string.h>
#include<iostream>


using namespace std;


array::array()
{
    capacity = 5;
    size = 0;
    arr = new int[capacity];
    //空间清0
    memset(arr,0,sizeof(int)*capacity);
}

array::array(int capacity)
{
    this->capacity = capacity;
    size = 0;
    arr = new int[capacity];
    //空间清0
    memset(arr,0,sizeof(int)*capacity);
}

array::array(const array &ob)
{
    capacity = ob.capacity;
    size = ob.size;
    arr = new int[capacity];
    memcpy(arr,ob.arr,sizeof(int)*capacity);
}

array::~array()//析构只要处理好成员指针指向就可以了
{
    if(arr !=NULL)
    {
        delete []arr;
        arr = NULL;
    }
}

void array::print_array()
{
    int i = 0;
    for(i =0;i<size;i++)
    {
        cout<<"第"<<i<<"个元素是:"<<arr[i]<<endl;
    }
    return;
}

void array::push_array(int data)
{
    if(size == capacity)
    {
        int *temp = new int[2*capacity];
        memcpy(temp,arr,sizeof(int)*capacity);
        delete []arr;
        arr = temp;
        arr[size] = data;
        size++;
        capacity = 2*capacity;
    }
    else
    {
        arr[size] = data;
        size ++;
    }
    return;
}

void array::pop_array()
{
    if(size == 0)
    {
        cout<<"数组空了"<<endl;
    }
    else
    {
        size--;
    }
    return;
}

int array::array_pos(int pos)
{
    if((pos<0) ||(pos>size))
    {
        cout<<"你越界了!"<<endl;
        exit(-1);
    }
    else
    {
        return arr[pos];
    }
}

array.h

#ifndef ARRAY_H
#define ARRAY_H


class array
{
private:
    int size;
    int capacity;
    int *arr;
public:
    array();
    array(int capacity);
    array(const array &ob);
    ~array();
    void print_array();
    void push_array(int data);
    void pop_array();
    int  array_pos(int pos);
};

#endif // ARRAY_H

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式男孩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值