c++中操作符->与 . 的使用与区别

->在C语言或C++中的含义 a -> b a:指针 b:变量或函数 a = &c; d = a->b; d = c.b; 阅读详情

在C++中,-> 和 . 是两个不同的成员访问操作符,用于访问类、结构体或联合体的成员。

“->” 操作符:
  • 用于通过指针访问指针所指向对象的成员。
  • 当有一个指向对象的指针时,可以使用 -> 操作符来访问该指针所指向对象的成员。
  • 语法:指针->成员名
  • 示例:
Person* ptr = new Person();
ptr->name = "Alice";
ptr->age = 25;
“.” 操作符:
  • 用于直接访问对象实例的成员。
  • 当你有一个对象的实例时,可以使用 . 操作符来直接访问该实例的成员。
  • 语法:实例.成员名
  • 示例:
Person person;
person.name = "Alice";
person.age = 25;
一个简单的代码案例来说明 -> 和 . 的使用和区别:
#include <iostream>
using namespace std;

class Person {
public:
    string name;
    int age;
};

int main() {
    Person person1;             // 创建一个 Person 类的对象 person1
    person1.name = "Alice";     // 直接访问对象实例的成员(使用 . 操作符)
    person1.age = 25;

    Person* person2 = new Person();  // 创建一个 Person 类的对象person2,并用指针 person2 指向它
    person2->name = "Bob";           // 通过指针访问对象的成员(使用 -> 操作符)
    person2->age = 30;

    cout << "Person 1: " << person1.name << ", " << person1.age << endl;
    cout << "Person 2: " << person2->name << ", " << person2->age << endl;

    delete person2;    // 释放通过 new 运算符分配的内存

    return 0;
}
  • 在上述示例中,我定义了一个 Person 类,其中包含两个成员变量 name 和 age。
  • 在 main 函数中,创建了两个 Person 对象:person1 是一个对象实例,通过 . 操作符直接访问它的成员变量;person2 是一个指向 Person 对象的指针,通过 -> 操作符访问它所指向对象的成员变量。
  • 输出结果为:
Person 1: Alice, 25
Person 2: Bob, 30

总结:

-> 用于访问指针所指向对象的成员。

. 用于直接访问对象实例的成员。

C++中的.、->、::和: 在学习C++的过程中我们经常会用到.和->,::和:和->,在此整理一下这些常用符号的区别。 1、A.B则A为对象或者结构体; 2、A->B则A为指针,->是成员提取,A->B是提取A中的成员B,A只能是指向类、结构、联合的指针; 3、::是作用域运算符,A::B表示作用域A中的名称B,A可以是名字空间、类; 4、:一般用来表示继承; 1、->是指针指向其成员的运算符。 . 是结构体的成员运算符,是对象专用的。 最大的区别是->前面放的是指针,而.前面跟的是 阅读详情

相关推荐

C++ 中,“.”、”->” 和”::”“三种常见的运算符,各自不同的用途和用法

运算符:用于访问对象的成员。运算符:用于通过指针访问对象的成员。运算符:用于访问类的静态成员、枚举值、命名空间成员或指定某个作用域。理解这三种运算符的区别和使用场景是掌握 C++ 编程语言的关键之一。

lagrange_kai的博客 1264

在C++中->运算符

是C++中的成员访问运算符,用于通过指针访问对象的成员。它提供了一种方便的方式来访问指针所指向对象的成员,使得对象成员的访问更加简洁和直接。是一个运算符,称为成员访问运算符(Member Access Operator)。它用于通过指针访问对象的成员(变量或函数)。运算符允许通过指针访问对象的成员,相当于对指针所指向的对象使用成员访问运算符。它提供了一种方便的方式来访问指针所指向对象的成员,而无需先解引用指针再使用。,可以访问并修改指针所指向的对象的成员。是对象的成员(变量或函数)。是一个指向对象的指针,

ultramand的博客,重生之我在cad上二次开发猛猛敲C#代码~ 1万+

Obsidian笔记同步实战:基于Git的私有化部署与自动化管理

本文详细介绍了如何利用Git为Obsidian笔记构建私有化、自动化且免费的同步方案。通过安装配置Git与Obsidian-git插件,结合Gitee等远程仓库,实现笔记的版本管理、多设备同步与自动备份,打造安全可靠的知识管理体系。

y7z8a的博客 272

C++(.)和(->)运算符用法总结

c++点运算符(.)和箭头运算符(->)用法总结。

weixin_45055461的博客 3872

CMIP6数据处理及在气候变化、水文、生态等领域中的应用

CMIP6、Biome-BGC、生态、气候变化、气象、水文、气候模式、植被、生态模式、遥感、极端气候、降水、WRF模式、动力降尺度、RCM、大气环流模型、贝叶斯模型、、降尺度

PhyliciaFelicia的博客 1553

用WorkBuddy搭建漫剧AI自动化制作流水线全攻略

在内容创作领域,AI智能体正逐渐从单一工具辅助走向全流程自动化调度。其核心原理是将剧本、分镜、绘图、配音、剪辑等环节拆解为可独立执行的任务单元,由总控系统统一协调,从而大幅降低人力与时间成本。这种模式尤其适用于动态漫画(漫剧)这类环节多、专业度要求高的视频形态。传统制作流程中,角色一致性、配音周期和剪辑返工是公认的效率瓶颈,而借助AI智能体工作台,创作者只需输入故事创意,即可驱动多个数字分身协同完成内容生产。本文以WorkBuddy为例,详细展示如何配置模型、安装技能包并串联五段式流水线,将单集制作成本从万

weixin_28224217的博客 253

18.C++-[ ]操作符使用 、函数对象与普通函数区别(详解)

在上章17.C++-string字符串类(详解)学习了string类,发现可以通过[ ]重载操作符来访问每个字符。 比如: string s="SAD"; for(int i=0,i&lt; s.length();i++) cout&lt;&lt;s[i]&lt;&lt;endl;   接下来,我们来自己写个[ ]重载操作符,来模拟string类 #include &...

weixin_33971977的博客 165

PMF5.0计算

EPA PMF5.0 计算步骤

nuistsy的博客 4543

More effective C++:条款1.仔细区别pointers和references及条款2:最好使用C++转型操作符

More effective C++:条款1.仔细区别pointers和references及条款2:最好使用C++转型操作符

qq_43847153的博客 629

Fiori Elements 表格之 Tree Tables:从数据建模到交互行为的全链路剖析

SAP Fiori elements的Tree Table组件将分层数据以表格形式展示,支持展开/折叠操作,适用于组织结构、物料清单等多级数据场景。该组件在List Report和Object Page中均可使用,支持懒加载、多选、列冻结等标准表格功能,并与OData V4服务层级注解深度集成。后端需通过RAP或CAP建模提供层级数据,前端通过清单配置切换表类型。需注意在草稿模式下仅显示活动实体,且展开状态在编辑时不保留。性能方面建议采用懒加载策略,避免全量加载树节点。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 159

[网络安全提高篇] 一二九.Powershell恶意代码检测 (5)混淆和反混淆 [上]

前文介绍了如何利用MS Defender实现恶意样本家族批量标注。这篇文章将继续讲解Powershell恶意代码检测,主要包括PowerShell混淆与反混淆内容,首先结合Invoke-Obfuscation工具详细介绍PowerShell代码混淆方法,再结合PowerDecode工具阐述解混淆方法。该研究将为后续的恶意软件家族分类或溯源提供帮助。未完待续,基础性文章,希望您喜欢,且看且珍惜。

杨秀璋的专栏 1541

C++中 “->“和“.“操作符的使用与区别

总的来说,对于遵循C++规则的代码,点操作符"."和箭头操作符"->"是必须掌握的基本要素。记住,点操作符"."常见于普通对象成员的访问,箭头操作符"->"多用于通过指针访问对象成员或是控制复杂数据结构的流向。因为,"."操作符期待一个对象,而不是指针,反之"->"操作符期待一个指向对象的指针,而非对象。此外,对于C++中的智能指针,如unique_ptr或shared_ptr,由于它们被设计为可以像指针一样工作,但提供一些额外的功能(例如自动内存管理),它们也可以使用箭头操作符来访问其指向的对象的成员。

高性价比服务器就选:蓝易云 501

喷涂机器人系列编程:ABB IRB 5500_(2).ABB IRB 5500喷涂机器人系统架构与组件

ABB IRB 5500喷涂机器人系统不仅在性能上表现出色,而且在安全和维护方面也提供了全面的解决方案。通过本文的详细介绍,希望读者能够更好地理解和掌握这一系统的架构和功能,为实际应用提供有力支持。

zhubeibei168的博客 778

C++语言中使用结构体时操作符.和->的使用及区别

总结: 普通结构体使用,可以用.当是用指针指向结构体时,使用->。 (*node).data的作用等于node->data 1、指向不同 一般情况下用“.”,只需要声明一个结构体。格式是,结构体类zhi型名+结构体名。然后用结构体名加dao“.”加域名就可以引用域 了。因为自动分配了结构体的内存。如同 int a;一样。 而用“->”,则要声明一个结构体的指针,还要手动开辟一个该结构体的内存,然后把返回的指针给声明的结构体指针,才能用“->”正确引用。否则...

马小超 1797

彻底解决JDK安装包点击后无反应

jdk双击无法安装,jdk双击没反应,jdk安装包双击后没反应。

renkai721的专栏 8939

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

c++

C++中 "\n" 与 endl 的区别是什么? "\n" 表示内容为一个回车符的字符串。std::endl 是流操作子,输出的作用和输出 "\n" 类似,但可能略有区别。 std::endl 输出一个换行符,并立即刷新缓冲区。 例如: std::cout << std::endl; 相当于: std::cout << '\n' << st...

apyasb2125的博客 198

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

C++中箭头操作符和点操作符

先来举个例子: struct MyStruct { int member_a; }; (1)

小米的修行之路 1429

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C++指针和引用的区别

More Effective C++中有对指针和引用在使用上的区别的介绍: 指针与引用看上去完全不同(指针用操作符’*’和’->’,引用使用操作符’.’),但是它们似乎有相同的功能。指针与引用都是让你间接引用其他对象。你如何决定在什么时候使用指针,在什么时候使用引用呢?  首先,要认识到在任何情况下都不能用指向空值的引用。一个引用必须总是指向某些对象。因此如果你使用一个变量并让它指向一个对...

weixin_30563917的博客 103

CPP内存管理

CPP内存管理,new和delete,定位new,operator new和operator delete,malloc/free和new/delete的区别

m0_68981107的博客 271

突破编程_C++_基础教程(操作符)

C++ 操作符(运算符)

突破编程 1178

C++中的操作符重载

在c++中,我们可以定义一个函数完成某种功能,当我们想完成的功能与通用操作符完成的功能一致时就需要进行操作符的重载来方便我们的应用。 如String类的两个对象,相加时我们可以实现append或者add函数,但是如果采用“+”会觉得更加方便。 所以我们重载+操作符,而

yumengkk的专栏 935

拷贝构造函数和赋值操作符

类有默认的构造函数、拷贝构造函数、析构函数、赋值操作运算符=和取地址运算符&.     默认的赋值操作运算符和默认的拷贝构造函数类似,对于每个非static成员,都是执行逐个成员赋值(memberwise assignment),同时也是按位赋值(bitwise copy).即,只是简单地将每个类成员的内存中的直接拷贝到对应的新的类的成员当中。     那么,什么时候需要赋值操作符

hubinbin595959的专栏 311

C++复制构造函数和赋值符的区别

#include "stdafx.h" #include #include using namespace std; //  Copy Constructor //using namespace std; // Assign sign class MyClass { public:  MyClass();  //  MyClass(const MyClass &);

QQ_Fighting的博客 459
上一篇: new和malloc的区别
下一篇: 顺序表的定义与实现(数据结构与算法)
喵汪wow
博客等级 码龄7年 312粉丝 63原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵汪wow

您的支持是我更新创作的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值