mooc openjudge 017 二维数组类

本题考点是在类中实现搭建二维数组,同时对[],()运算符实现重载
挺有意思的,好玩的地方在于,[]只需重载一次,第二次是不需要重载的
代码如下

#include <iostream>
#include <cstring>
using namespace std;

class Array2 {
// 在此处补充你的代码
    public:
        int x,y;//维度
        int **pa;
        Array2(int x_=0,int y_=0):x(x_),y(y_){//二维数组的搭建
            pa=new int *[x];
            for(int i=0;i<x;++i){
                pa[i]=new int [y];
            }
        }
        int * operator[](int i){
            return pa[i];
        }
        int operator()(int i,int j){
            return pa[i][j];
        }
};

int main() {
    Array2 a(3,4);//需要构造函数,搞一个二维数组
    int i,j;
    for(  i = 0;i < 3; ++i )
        for(  j = 0; j < 4; j ++ )
            a[i][j] = i * 4 + j;//此处,需要重载[],只允许重载为成员函数,其实只需要重载一次,第二个[]是不需要重载的
    for(  i = 0;i < 3; ++i ) {
        for(  j = 0; j < 4; j ++ ) {
            cout << a(i,j) << ",";//应该需要重载()
        }
        cout << endl;
    }
    cout << "next" << endl;
    Array2 b;     b = a;//关于这个=号,因为没搞析构函数,不太需要重载来深拷贝
    for(  i = 0;i < 3; ++i ) {
        for(  j = 0; j < 4; j ++ ) {
            cout << b[i][j] << ",";
        }
        cout << endl;
    }
    //system("pause");
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值