C++怎样重载下标运算符 [ ]

[复制链接]
查看11 | 回复3 | 2017-10-3 00:29:57 | 显示全部楼层 |阅读模式
请设计一个表示时间、简单但完整的Time类,它包含3个数据成员:hour, minute, second;要求在Time类中重载“[ ]”运算符,如果t是一个Time类的,则t[1]表示hour成员,t[2]表示munute成员,t[3]表示second成员,其他下标都是无效的;在“[ ]”运算符重载函数中使用assert函数对下标进行有效性检查。
在“[ ]”运算符重载函数中使用assert函数对下标进行有效性检查。
这个是什么意思

回复

使用道具 举报

千问 | 2017-10-3 00:29:57 | 显示全部楼层
重载运算[ ],在需要重载的类中声明 ClassName& operator [](int i)就可以了。参数i是代表传入的[ ]括号中的值(索引)。因为我们使用[ ]的使用会用到类似 a = value的表达式去赋值,所以返回类的引用可以支持赋值操作。这里有我修改的一段示例代码#includeusing namespace std; class point {private:
int x, y;public:
static int count;
point(int xx, int yy) :x(xx), y(yy) { count++; }
point() { count++;
回复

使用道具 举报

千问 | 2017-10-3 00:29:57 | 显示全部楼层
给个示例,以楼上代码为基础,再包含头文件assert.hclass time{ public:int& operator[](int k){ assert( (0<= k) && (k<=100) ); if (k == 1) return hour; else if (k == 2) return
回复

使用道具 举报

千问 | 2017-10-3 00:29:57 | 显示全部楼层
class time{ public:int& operator[](int k){ if (k == 1) return hour; else if (k == 2) return minute; else return second;}int hour, minute, second;}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行