IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 【c++教程】3.7-成员运算符 -> 正文阅读

[C++知识库]【c++教程】3.7-成员运算符

成员运算符

?

对象的成员 a.b

指针的成员 a->b

1, 对于对象的成员运算符,和其他的运算符一样,点的前后是可以有空格的,也就是说a.b是可以被写作a . b的,只不过一般很少会见到这样的情况。

2,对象的成员运算符不可以被重载,指针的成员运算符不可以被任意重载(与一般的运算符重载不同,指针的成员运算符重载必须要像非重载的指针成员运算符那样去使用)。

3,a->b应当等价于(*a).b

其他成员运算符

注:这些运算符可以操作成员,但并不算我们一般认为的成员运算符。所以,也可以不叫它们成员运算符。

下标 []

解引用(解参考,寻址) *a

取地址 &a

1, 下标运算符一般用于访问数组所指向的对象,但是实际上,下标运算符也可以访问指针所指向的对象。

#include <iostream>
 
using namespace std;

int main()
{
    int a = 100;
    int * p = &a;

    // 此处p[0]和*p的效果是一样的
    cout << *p << endl;
    cout << p[0] << endl;

}

2,解引用可以访问指针所指向的对象。

#include <iostream>
 
using namespace std;

int main()
{
    int a = 50;
    int * p = &a;

    // 对指针的解引用进行运算,不会改变指针中保存的值
    cout << *p * 5 << endl;
    cout << *p << endl;
    cout << a << endl;

    // 对指针的解引用进行赋值,会改变指针中保存的值
    cout << (*p *= 5) << endl;
    cout << *p << endl;
    cout << a << endl;
}

3,取地址可以获得地址,也就是说可以用于创建指针。

为什么要有引用

在很多情况下,我们都使用了引用代替了指针,那么为什么不用指针,而需要使用引用呢?

事实上,指针很好用(指功能),但是指针不太好用(指使用),很重要的一点就是,指针的操作方式和对象的操作方式不一样。例如,使用一个对象的时候,我们需要使用对象的成员运算符a.b,但是如果使用的是指针,就要改为a->b。因此,如果要使用指针,我们就得经常考虑,现在使用的是指针吗?我应该用哪个运算符呢?(当然,现在很多的集成开发环境是非常智能的,你可以一直使用.运算符,如果遇到了指针,它会帮助你自动改为->。当然这是另外一回事了)

因此,为了能够统一指针和普通对象的操作上的不同。我们就引入了引用来代替指针。但是实际上,引用就是指针。

补充知识-提领

如果你在阅读一些年代稍微久远一点的书籍的话,你可能会遇到一个奇怪的词语,就是提领。你可能觉得这太怪异了,这是什么说法,从来都没见过,百度上都搜不到,这不是古代的官名吗?为什么会在这里出现呢?

实际上,提领就是解引用,也就是dereference。这不是一个错误的翻译,也不是什么怪异的说法,这是一个很常见的用法,只不过很多人不知道罢了。因此,如果你遇到了,也没什么好纠结的。就算是时至今日,至少在世界上的某些地方,提领这个词还是经常会被使用的。


彩蛋

在佛教中,你可能经常会遇到一种说法,这个人和佛很有缘啊。当然,他们的判断标准是什么,我无从得知。但是据说,如果一个人天生就莫名喜欢1024这个数字的话。那么他大概和程序是很有缘份的。

那么,你,喜欢1024吗?

???????

点击查看全部c++教程???????

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-01 16:38:20  更:2021-10-01 16:38:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 17:02:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码