C++ 类(经典案例)

文章概述

本篇文章主要是通过两个经典案例熟悉运算符重载以及自己实现数组类;
初始化的时候可以用NULL,但是赋值的时候不可以的。


实现数组类

需求: a.能够设置数组的元素 b. 用一个对象初始化另一个对象 c.获取元素

//a.能够设置数组的元素  b. 用一个对象初始化另一个对象  c.获取元素
class Array
{
   
   
private:
    //表示的数组的首地址
    int* p;
    //表示数组最大存放元素的数量
    int length;
public:
    Array(int length)
    {
        if (length<0)
        {
            length = 0;
        }
        this->length = length;
        p = new int[this->length];
    }
    //a.能够设置数组的元素
    void setData(int index,int data)
    {
        p[index] = data;
    }
    //c.获取元素
    int getData(int index)
    {
        return p[index];
    }
    // b.用一个对象初始化另一个对象(由于存在指针变量所以用深拷贝)
    Array(const Array& obj)
    {
        this->length = obj.length;
        p = new int[this->length];
        for (int i=0;i<this->length;i++)
        {
            p[i] = obj.p[i];
        }
    }
    //获得数组元素的长度
    int GetLength()
    {
        return this->length;
    }
    ~Array()
    {
        if (p != NULL)
        {
            delete[]p;
        }
        this->length = 0;
    }
};

int main()
{
    Array arr(10);
    //设置元素
    for (int i=0;i<arr.GetLength();i++)
    {
        arr.setData(i,i);
    }
    //输出元素
    for (int i=0;i<arr.GetLength();i++)
    {
        cout << arr.getData(i) << endl;
    }
    cout << "使用arr初始化brr" << endl;
    //使用arr初始化brr
    Array brr = arr;
    for (int i = 0; i<brr.GetLength(); i++)
    {
        cout << brr.getData(i) << endl;
    }
    return 0;
}

对于数组Array重载运算符

需求: a. [] —->arr[0]=5; b.== !=; c.cout<

//a. []---->arr[0]=5;  b.== !=;  c.cout<<arr[0]<<endl; d.<<  >>
class Array
{
    //最好将std中的参数放在前面
    friend ostream& operator<<(ostream& out, Array& obj);
    friend istream& operator>>(istream& in, Array& obj);
private:
    //表示的数组的首地址
    int* p;
    //表示数组最大存放元素的数量
    int length;
public:
    Array(int length)
    {
        if (length<0)
        {
            length = 0;
        }
        this->length = length;
        p = new int[this->length];
    }
    //a.能够设置数组的元素
    void setData(int index,int data)
    {
        p[index] = data;
    }
    //c.获取元素
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值