You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何在对象指针中需用->而非.访问成员?

为什么C++中对象指针必须用->访问成员而不能用.?

首先得明确核心区别:

  • a是JMP类型的实体对象,它本身直接包含number成员的数据,所以用.运算符就能直接访问成员,比如a.number完全合法。
  • sum_obj是JMP类型的指针(JMP*),它存储的不是对象本身,而是这个JMP对象在内存中的地址。指针自己并没有number这个成员,你要访问的是它指向的那个对象的成员,必须先找到指针指向的实体对象才行。

.运算符只能直接作用于实体对象,要访问指针指向的对象的成员,你需要先对指针做解引用操作(用*),把指针转换成它指向的实体对象,再用.访问,也就是(*sum_obj).number。

而->是C++专门为指针访问成员设计的语法糖,它和(*指针).成员完全等价,只是写起来更简洁。所以sum_obj->number本质上就是先解引用指针,再访问成员的简化写法。

你写sum_obj.number时,编译器会误以为你要访问指针sum_obj自身的number成员,但指针类型JMP*根本没有这个成员,因此会报错提示你应该使用->。


内容的提问来源于stack exchange,提问作者user21165505

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 04:15:00