C++ Primer 成员访问运算符

embedded/2025/2/28 14:57:46/

欢迎阅读我的 【C++Primer】专栏

专栏简介:本专栏主要面向C++初学者,解释C++的一些基本概念和基础语言特性,涉及C++标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级程序设计技术。希望对读者有帮助!

在这里插入图片描述
在这里插入图片描述

目录

4.6 成员访问运算符

点运算符和箭头运算符都可用于访问成员,其中,点运算符获取类对象的一个成员;箭头运算符与点运算符有关,表达式pt->mem等价于(*ptr).mem:

strtng s1="astring",*p=g&s1;
auto n=s1.size(); //运行string对象s1的size成员
n = (*p).size();  //运行p所指对象的size成员
p->size();        //等价于(*p).size()

因为解引用运算符的优先级低于点运算符,所以执行解引用运算的子表达式两端必须加上括号。如果没加括号,代码的含义就大不相同了:

//运行p的size成员,然后解引用size的结果
*p.size(); //错误:p是一个指针,它没有名为size的成员

这条表达式试图访问对象p的size成员,但是p本身是一个指针且不包含任何成员,所以上述语句无法通过编译。

箭头运算符作用于一个指针类型的运算对象,结果是一个左值。点运算符分成两种情况:如果成员所属的对象是左值,那么结果是左值;反之,如果成员所属的对象是右值,那么结果是右值。


http://www.ppmy.cn/embedded/168813.html

相关文章

游戏引擎学习第125天

仓库:https://gitee.com/mrxiao_com/2d_game_3 回顾并为今天的内容做准备。 昨天,当我们离开时,工作队列已经完成了基本的功能。这个队列虽然简单,但它能够执行任务,并且我们已经为各种操作编写了测试。字符串也能够正常推送到队…

HTTPS 与 HTTP 的区别在哪?

HTTP与HTTPS作为互联网数据传输的核心协议,其通信机制与安全特性深刻影响着现代网络应用的可靠性与用户体验。本文将解析两者的通信流程、安全机制及核心差异。 一、HTTP的通信机制 先来看看HTTP是什么吧。 HTTP基于TCP/IP协议栈,采用经典客户端-服务…

java项目之基于ssm的线上旅游体验系统(源码+文档)

项目简介 基于ssm的线上旅游体验系统实现了以下功能: 用户信息管理: 用户信息新增 用户信息修改 景点信息管理: 景点信息添加 景点信息删除 景点信息修改 景点类型管理: 景点类型添加 景点类型删除 景点类型修改 景点留言管理…

【蓝桥杯单片机】第十三届省赛第二场

一、真题 二、模块构建 1.编写初始化函数(init.c) void Cls_Peripheral(void); 关闭led led对应的锁存器由Y4C控制关闭蜂鸣器和继电器 2.编写LED函数(led.c) void Led_Disp(unsigned char ucLed); 将ucLed取反的值赋给P0 开启锁存器 关闭锁存…

探寻数组中两个不重复数字的奥秘:C 语言实战之旅

在编程的世界里,经常会遇到各种各样有趣的问题,今天我们就来探讨一个经典的题目:在一个整数数组中,除了两个数字只出现一次,其余数字都出现了两次,如何高效地找出这两个只出现一次的数字呢?我们…

【python】提取word\pdf格式内容到txt文件

一、使用pdfminer提取 import os import re from pdfminer.high_level import extract_text import docx2txt import jiebadef read_pdf(file_path):"""读取 PDF 文件内容:param file_path: PDF 文件路径:return: 文件内容文本"""try:text ext…

c++中如何打印未知类型对象的类型

在 C 中要打印未知类型对象的类型名称,可以通过以下方法实现: 目录 方法一:使用 typeid 和 name()(需包含 ) 使用示例: 问题与改进: 方法二:编译时类型名称(C17 起&…

MS SQL 2008 技术内幕:T-SQL 语言基础

《MS SQL 2008 技术内幕:T-SQL 语言基础》是一部全面介绍 Microsoft SQL Server 2008 中 T-SQL(Transact-SQL)语言的书籍。T-SQL 是 SQL Server 的扩展版本,增加了编程功能和数据库管理功能,使得开发者和数据库管理员能…