c++ 箭头符号怎么打_c++笔记--重载箭头运算符
箭头操作符(->)的通常用法是,使用一个类对象的指针来调用该指针所指对象的成员。左操作数为对象指针,右操作数为该对象的成员。定义重载箭头操作符之后看起来就有点特别,可以用类对象的指针来调用,也可以用类对象直接调用。
重载箭头操作符,首先重载箭头操作符必须定义为类成员函数。
箭头操作符可能看起来是二元操作符:接受一个对象和一个成员名,对对象解引用以获取成员。其实箭头操作符是一元操作符,没有显示形参(而且是类成员,唯一隐式形参是this)。->的右操作数不是表达式,而是对应类成员的一个标识符,由编译器处理获取成员工作(编译器对重载箭头操作符所做的事情,比其它重载操作符要多,这里也正是复杂的地方)。
下面这一段是《C++ Primer》重载箭头操作符的内容。
----------------------------------------华丽分割线----------------------------------------
重载箭头操作符
箭头操作符与众不同。它可能表现得像二元操作符一样:接受一个对象和一个成员名。对对象解引用以获取成员。不管外表如何,箭头操作符不接受显式形参。
这里没有第二个形参,因为 -> 的右操作数不是表达式,相反,是对应着类成员的一个标识符。没有明显可行的途径将一个标识符作为形参传递给函数,相反,由编译器处理获取成员的工作。
当这样编写时:
point->action();
由于优先级规则,它实际等价于编写:
(point->action)();
换句话说,我们想要调用的是对 point->action 求值的结果。编译器这样对该代码进行求值:
1.如果 point 是一个指针,指向具有名为 action 的成员的类对象,则编译器将代码编译为调用该对象的 action 成员。
2.否则,如果 point(注:中文版误写为action) 是定义了 operator-> 操作符的类的一个对象,则 point->action 与 point.operator->()->action 相同。即,执行 point 的 operator->(),然后使用该结果重复这三步。
3.否则,代码出错。
对重载箭头的返回值的约束
重载箭头操作符必须返回指向类类型的指针,或者返回定义了自己的箭头操作符的类类型对象。
如果返回类型是指针,则内置箭头操作符可用于该指针,编译器对该指针解引用并从结果对象获取指定成员。如果被指向的类型没有定义那个成员,则编译器产生一个错误。
如果返回类型是类类型的其他对象(或是这种对象的引用),则将递归应用该操作符。编译器检查返回对象所属类型是否具有成员箭头,如果有,就应用那个操作符;否则,编译器产生一个错误。这个过程继续下去,直到返回一个指向带有指定成员的的对象的指针,或者返回某些其他值,在后一种情况下,代码出错。
c++ 箭头符号怎么打_c++笔记--重载箭头运算符相关推荐
- c++ 箭头符号怎么打_C++随笔
1.点(.)操作符和箭头(->)操作符 当定义类对象是指针对象时候,就需要用到 "->" 指向类中的成员:当定义一般对象时候时就需要用到 "." 指 ...
- c++ 箭头符号怎么打_C++编程基础知识二
运算符: ①成员访问运算符:点运算符和箭头运算符: 点运算符:获取类对象的一个成员: 箭头运算符:ptr->mem 等价于(*ptr).mem; ②条件运算符:cond?expr1:expr2; ...
- c++ 箭头符号怎么打_C++语言中的标识符只能由字母、数字、下划线三种字符组成,且第一个字符_____。...
[判断题]尺寸界线可以被隐藏 . . [判断题]AutoCAD 的绘圆心标记功能只是用于为圆或圆弧绘圆心标记或中心线,并不能标注尺寸. [判断题]将成本按其可辨认性分为直接成本与间接成本有利于分清各部 ...
- html向下的箭头符号怎么打,向下的箭头怎么打
单位刚刚组织完体检,报告一出来,很多人不"淡定"了,几乎一半的同事血脂化验单上有向上的箭头,剩下的没有箭头,这都说明什么呢?哪些数据比较重要呢? 今天,就来聊聊,如何看血脂化验单? ...
- css竖向箭头符号_用css制作空心箭头(上下左右各个方向均有)
css制作空心的上下左右的箭头 *{padding:0;margin:0; }.box{width:100px;height:500px;margin:0 auto;border:1px solid ...
- 电脑箭头,电脑箭头符号怎么打出来(往返箭头符号图案)
打法是按住A!t加数字34148然后一起放手 alt+34148=�d alt+34149=�e alt+43144=� alt+43151=� alt+41459=◇ alt+41460=◆ alt ...
- html上下两个箭头符号怎么打出来,电脑箭头符号怎么打出来(往返箭头符号图案)...
玩法是按住A!t加数字34148随后一起放手 alt 34148=卍 alt 34149=卐 alt 43144=▓ alt 43151=◤ alt 41459=◇ alt 41460=◆ alt 4 ...
- 【C++学习笔记四】运算符重载
当调用一个重载函数和重载运算符时,编译器通过把您所使用的参数类型和定义中的参数类型相比较,巨鼎选用最合适的定义.(重载决策) 重载运算符时带有特殊名称的函数,函数名是由关键字operator和其后要重 ...
- es6箭头函数_javascript-ES6函数进阶(箭头函数,默认参数)(笔记)
1.箭头函数 1.1 箭头函数,一行时,不用{} // 箭头函数,一行时,不用{} var t = ()=>console.log('t'); t() 1.2 传一个参数,可以省略() // 传 ...
最新文章
- 视频监控系统供电方式及选择方法
- 项目开发涉及循坏的小思路
- 【论文阅读整理】A Survey on Device-free Indoor Localization and Tracking in the Multi-resident Environment
- Jave之Scanner和不合法输入处理
- 关于JAVA并发编程你需要知道的——硬件篇
- (最新合集)计算机网络谢希仁第七版 第一章课后答案
- WeChall_PHP-Local File Inclusion(LFI)
- scala java抽象理解_scala – 抽象覆盖如何在Java代码方面起作用?
- php study 后门,phpStudy后门简要分析
- JDBC在Java Web中的应用——分页查询
- 汉王考勤系统服务器IP,汉王人脸识别考勤客户端使用说明
- matlab用图像,Matlab常用图像操作
- pytorch训练时报input size错误问题
- WPF - 简单的UI框架
- 口罩危机下的电商大考
- .NET程序集反编译器Reflector - 应用和平台 – 微软学生中心
- 小白也能看懂的XML简介
- t-learning 产品经理课程笔记
- python写打开的excel 冲突_在Python中打开excel文件时出错
- 危害与风险分析方法论 | HACCP 和 HAZOP
热门文章
- 华为MateBook16投屏设置
- jquery tableExport 插件导出excel (无乱码) 比较简单的表格
- python入门教学反思_Python语言教学反思
- 中职计算机技术教学计划,中职计算机应用基础教学计划.doc
- 拨号盘拨号数字间距太小 调大 修改通讯录里面收藏和所有联系人字体颜色
- spark streaming 整合kafka 报错 KafkaConsumer is not safe for multi-threaded access
- 工业革命的秋之涟漪(二):从飞桨,走向深度学习产业实践
- erp仓储管理 java,关于java:ERP仓库管理的操作与设计开源软件诞生20
- delphi 人脸比对_中控人脸/指纹机DEMO(delphi)
- 可控硅及其应用 -- 功率调节、电机调速