运算符重载-编程题#3(C++程序设计第4周)

来源:互联网 发布:c语言运算符 编辑:程序博客网 时间:2024/06/06 02:20

编程题 #3

来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)

注意: 总时间限制: 1000ms 内存限制: 65536kB

描述

写一个二维数组类 Array2,使得下面程序的输出结果是:

0,1,2,3,

4,5,6,7,

8,9,10,11,

next

0,1,2,3,

4,5,6,7,

8,9,10,11,

程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
#include <cstring>
using namespace std;
//
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;
}
return 0;
}

输入

输出

0,1,2,3,

4,5,6,7,

8,9,10,11,

next

0,1,2,3,

4,5,6,7,

8,9,10,11,

样例输入

1

样例输出

1
2
3
4
5
6
7
0,1,2,3,
4,5,6,7,
8,9,10,11,
next
0,1,2,3,
4,5,6,7,
8,9,10,11,

代码:

#include <iostream>#include <cstring>using namespace std;// 在此处补充你的代码//定义一个类Array2//要重载操作符'[]',支持二维数组下标//要重载操作符 '()'//要进行深度拷贝,建立自己的拷贝构造函数class Array2{private:int arr[10][10];public:Array2();Array2(int, int);int*  operator [](int i);int operator()(int i, int j);Array2(Array2& c);};//建立默认构造函数Array2::Array2(){for (int i = 0; i < 10; i++)for (int j = 0; j < 10; j++){arr[i][j] = 0;}}//建立构造函数,初始化二维数组arrArray2::Array2(int a, int b){for (int i = 0; i < a; i++)for (int j = 0; j < b; j++){arr[i][j] = 0;}}//重载操作符'[]',支持二维数组下标int*  Array2::operator [](int i){return arr[i];    //它是二维数组arr的第i个元素,即第i个小数组的首地址,故返回值类型应该为int* }//重载操作符 '()'  int Array2::operator()(int i, int j){return arr[i][j];}//建立自己的拷贝构造函数,进行深度拷贝Array2::Array2(Array2& c){for (int i = 0; i < 10; i++)for (int j = 0; j < 10; j++){arr[i][j] = c.arr[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;}return 0;}


0 0
原创粉丝点击