首页 > 编程 > C++ > 正文

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

2019-11-06 07:56:47
字体:
来源:转载
供稿:网友

编程题 #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,

程序:

1234567891011121314151617181920212223242526#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无

样例输出

12345670,1,2,3,4,5,6,7,8,9,10,11,next0,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;}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选