- 1、本文档共81页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DoubleArray类的使用 定义:DoubleArray array(20, 30); 数组输入: for (i=20; i=30; ++i) { cout 请输入第 i 个元素:; cin array[i]; } 数组输出: for (i=20; i=30; ++i) cout array[i] \t; 几个特殊的运算符的重载 赋值运算符 下标运算符 函数调用运算符 ++和—运算符的重载 重载函数的原型设计考虑 输入输出运算符重载 函数调用运算符 函数调用运算符()是一个二元运算符。它的第一个运算对象是函数名,第二个参数是形式参数表。运算的结果是函数的返回值。 一个类重载了函数调用运算符,就可以把这个类的对象当做函数来使用 函数调用运算符重载 函数调用运算符必须重载成成员函数 函数调用运算符重载函数的原型为 函数的返回值 operator() (形式参数表); 函数调用运算符重载实例 在DoubleArray类增加一个功能:取数组中的一部分元素形成一个新的数组 例如,在一个下标范围为10到20的数组arr中取出下标为第12到15的元素,形成一个下标范围为2到5的数组存放在数组arr1中,可以调用 arr1 = arr(12, 15, 2)。 DoubleArray operator()(int start, int end, int lh) { if (start end || start low || end high ) { cout 下标越界; exit(-1); } DoubleArray tmp(lh, lh + end - start); for (int i = 0; i end - start + 1; ++i) tmp.storage[i] = storage[start + i - low]; return tmp; } 几个特殊的运算符的重载 赋值运算符 下标运算符 函数调用运算符 ++和—运算符的重载 重载函数的原型设计考虑 输入输出运算符重载 “++”和“--”重载 ++、- -:是一元操作符 这两个操作符可以是前缀,也可以是后缀。而且前缀和后缀的含义是有区别的。所以,必须有两个重载函数。 问题:两个重载函数有相同的原型 区分方法: 前缀:一元操作符。 后缀:二元操作符。 “++”和“--”重载 cont. 成员函数重载 ++ob重载为:ob.operator++() ob-- 重载为:ob.operator--(int) 友元函数重载 ++ob重载为:operator++(X ob) ob--重载为:operator--(X ob, int) 调用时,参数int一般传递给值0。 ++、--重载实例 设计一个会报警的计数器类。该计数器从0开始计数,当到达预先设定好的报警值时,计数器会发出报警消息,计数器的值不再增加。 类定义 class Counter { int value; //计数器的值 int alarm; //报警值 public: Counter(int a) {value = 0; alarm = a;} Counter operator++(); //前缀的++重载 Counter operator++(int); //后缀的++重载 void print() {cout value endl; } }; 类实现 Counter Counter::operator++() { if (value == alarm) cout 已超过报警值\n; else { ++value; if (value == alarm) cout 已到达报警值\n; } return *this; } Counter Counter::operator++(int x) { Counter tmp = *this; //保存对象修改前的状态 if (value == alarm) cout 已超过报警值\n; else { ++value; if (value == alarm) cout 已到达报警值\n; } return tmp; //返回修改前的状态 } 类的使用 int main() { Counter cnt(3); //定义一个Counter
文档评论(0)