c++笔记--关于箭头运算符重载使用

在stl里面,list的迭代器有重载箭头运算符。之前没搞清楚这个有什么用,看了一些资料,加上自己前面一篇笔记。

写了下面测试程序:

 1 #include <iostream>
 2 #include <queue>
 3 #include <climits>
 4 #include <algorithm>
 5 #include <memory.h>
 6 #include <stdio.h>
 7 #include <map>
 8 #include <vector>
 9 #include <list>
10 #include <stack>
11 using namespace std;
12
13 class test
14 {
15 public:
16     int a;
17     test():a(2){}
18 };
19
20 int main(int argc, char *argv[])
21 {
22     list<test>::iterator it;
23     list<test> l;
24     test t;
25     l.push_back(t);
26     it = l.begin();
27     cout<<it->a<<endl;
28     return 0;
29 }

上面程序中,如果我们声明了list<int>的对象,那么对应的迭代器的箭头操作符其实就没什么作用了。

c++笔记--关于箭头运算符重载使用,布布扣,bubuko.com

时间: 2024-12-28 15:36:44

c++笔记--关于箭头运算符重载使用的相关文章

【c++笔记十】运算符重载

2015年2月1日 阴雨 周日 今天难得休息,闲来无事就往岳麓山走了一遭,作为一个有情怀的程序猿就应该培养B格,不对,培养情操.拍了点雾凇,可以去我QQ空间看看. 今天笔记里要说的内容是:运算符重载.就像函数重载,运算符也可以重载.到底是什么样的重载呢?请听下回分解.哦不对,请看下面分解. --------------------------------------分割线------------------------------------------ 一.什么是运算符的重载? 我们先一起来看

C++笔记(3):运算符重载

运算符重载 1.运算符重载基础 2.运算符重载的规则 3.重载双目运算符 4.重载单目运算符 5.重载流插入和提取运算符 6.类型转换 7.定义自己的string类 ------------------------------------------------------------------------------------------------------------------------------- 1.运算符重载基础 运算符重载就是对已有的运算符赋予新的含义,实现新的功能.前

C++学习笔记12:运算符重载(赋值操作符1)

为数偶类定义专用的赋值操作符 class Couple { public: Couple(int a = 0, int b = 0) :_a(a), _b(b) {} Couple(const Couple &c):_a(c._a),_b(c._b){} Couple &operator=(const Couple &c); private: int _a, _b; }; Couple & Couple::operator=(const Couple &c) { i

C++学习笔记13:运算符重载(赋值操作符2)

移动语义 完成所有权的移交,当拷贝构造和赋值构造时,目标对象的所有权必须移交给我们的新的对象,原始对象将丧失所有权,_p指针将不再指向原来的那个数组: 左值与右值 C原始定义 左值:可以出现在赋值号的左边或者右边 右值:只能出现在赋值号的右边 C++的定义 左值:用于标识非临时对象或者非成员函数的表达式 右值:用于标识临时对象的表达式或与任何对象无关的值(纯右值),或用于标识即将失效的对象的表达式(失效值) 左值引用与右值引用 左值引用:& 右值引用:&& 深拷贝需要频繁分配和释放

c++笔记--重载箭头运算符

箭头操作符(->)的通常用法是,使用一个类对象的指针来调用该指针所指对象的成员.左操作数为对象指针,右操作数为该对象的成员.定义重载箭头操作符之后看起来就有点特别,可以用类对象的指针来调用,也可以用类对象直接调用. 重载箭头操作符,首先重载箭头操作符必须定义为类成员函数. 箭头操作符可能看起来是二元操作符:接受一个对象和一个成员名,对对象解引用以获取成员.其实箭头操作符是一元操作符,没有显示形参(而且是类成员,唯一隐式形参是this).->的右操作数不是表达式,而是对应类成员的一个标识符,由编

C++ Primer笔记12_运算符重载_递增递减运算符_成员访问运算符

1.递增递减运算符 C++语言并不要求递增递减运算符必须是类的成员.但是因为他们改变的正好是所操作对象的状态,所以建议设定为成员函数. 对于递增与递减运算符来说,有前置与后置两个版本,因此,我们应该为类定义两个版本的递增与递减运算符. 问题来了,程序是如何区分前置和后置呢?因为都是++和-- 为了解决这个问题,后置版本的递增递减运算符接受一个额外的(不被使用)int类型的形参.当我们使用后置运算符时,编译器为这个形参提供一个值为0的实参.这个形参唯一的作用就是区分前置和后置运算符函数. 因为不会

c++笔记——运算符重载

运算符重载在c++中是经常用到的一个知识点,也是c++富有扩展性的重要支持点. 今天我准备把运算符重载在各种情况下的应用,都一一举例,待会我们就会知道运算符重载的威力和带来的便捷性. 运算符重载函数的两种形式: 1.作为类的成员函数 赋值(=).下标([]).调用( () ).成员访问箭头(->) , 这四个运算符必须是成员函数,其他运算符既可以是成员函数,也可以使非成员函数. 注意点:如果我们把运算符函数定义成成员函数时,它的左侧运算对象必须是所属类的一个对象. 2.作为非成员函数 一般情况下

初探C++运算符重载学习笔记&lt;1&gt;

运算符重载 含义: 对抽象数据类型也能够直接使用C++提供的运算符 对已有的运算符赋予多重的含义 使同一运算符针对不同的数据类型产生不同的行为 目的: -->扩展C++运算符的适用范围,以用于类所表示的抽象数据类型 -->程序更简洁 -->代码可读性更好 例如complex_a和complex_b是两个复数对象,如果求和,希望能直接写成 complex_a + complex_b  这样的形式. 实质: 函数重载 返回值类型 operator 运算符(参数表) { .... } 在函数编

C++ Primer笔记13_运算符重载_总结

总结: 1.不能重载的运算符: . 和 .* 和 ?: 和 ::  和 sizeof 和 typeid 2.重载运算符有两种基本选择: 类的成员函数或者友元函数, 建议规则如下: 运算符 建议使用 所有一元运算符 成员函数 = () [] -> 必须是成员函数 += -= /= *= ^= &= != %= >>= <<= , 似乎带等号的都在这里了. 成员函数 所有其它二元运算符, 例如: –,+,*,/ 友元函数 3.前几篇中的实例,现在汇总Person类的程序: