Loading

摘要: 14.8.0 引入 函数对象 我们可以重载类类型的函数调用运算符,进而像使用函数一样使用这个类 那么这个类既可以存储状态,又可以当函数使用,十分灵活 //定义一个类,让它起到一个求绝对值函数的作用 struct absInt{ int operator()(int val) const { retu 阅读全文
posted @ 2022-03-02 14:08 咪啪魔女 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 目标代码 本节重在理解下述的代码,尤其是->的返回值 class StrBlobPtr{ public : string& operator*() const{ auto p = check(curr, "dereference past end"); return (*p)[curr]; //*p 阅读全文
posted @ 2022-03-02 14:07 咪啪魔女 阅读(43) 评论(0) 推荐(0) 编辑
摘要: 一般设置为成员函数 定义前置递增递减 定义后置递增递减 后置先记录对象 然后用前置实现后置 阅读全文
posted @ 2022-03-02 14:07 咪啪魔女 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 在13.1节中已经介绍过赋值运算符的编写,再次不再赘述,主要强调三个原则 参数:const引用 返回值:左侧对象引用 步骤:拷贝参数对象,释放左对象,更新左对象。【处理自赋值】 用初始化列表initializer_list来赋值 和拷贝赋值及移动赋值运算符一样,其他重载的赋值运算符也必须先释放当前内 阅读全文
posted @ 2022-03-02 14:06 咪啪魔女 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 表示容器的类通常可以通过元素在容器中的位置访问元素,这些类一般会定义下标运算符operator[]。 下标运算符必须是成员函数。 为了与下标的原始定义兼容,下标运算符通常以所访问元素的引用作为返回值,这样做的好处是下标可以出现在赋值运算符的任意一端。进一步,我们最好同时定义下标运算符的常量版本和非常 阅读全文
posted @ 2022-03-02 14:06 咪啪魔女 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 14.3.0 基本介绍 通常情况下,我们把算术和关系运算符定义成非成员函数以允许对左侧或右侧的运算对象进行转换(参见14.1节,第492页)。 参数:常量引用。因为这些运算符一般不需要改变运算对象的状态,所以形参都是常量的引用。 返回值:值返回。算术运算符通常会计算它的两个运算对象并得到一个新值,这 阅读全文
posted @ 2022-03-02 14:05 咪啪魔女 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 14.2.1 重载输出运算符 参数与返回值 第一个形参:ostream的引用【ostream无法复制】 第二个新参:常量引用【避免复制对象】 返回:ostream的引用【链式使用】 Sale_data的输出运算符 ostream& operator<<(ostream &os; const Sale 阅读全文
posted @ 2022-03-02 13:16 咪啪魔女 阅读(75) 评论(0) 推荐(0) 编辑
摘要: 基本介绍 重载运算符是特殊名字的函数 名字:operator后面加上需要重载的运算符号 构成: 参数列表 返回类型 函数体 注意点: 不能含有默认实参 第一个(左侧)运算对象绑定到隐式的this,所以显式的运算对象比实际的运算对象少一个 至少有一个类类型对象参数 //错误:不能重新定义内置的运算符 阅读全文
posted @ 2022-03-02 13:15 咪啪魔女 阅读(72) 评论(0) 推荐(0) 编辑