* 解引用(取指针指向的值),通过指针访问指针指向的对象
-> 等价于(*ptr).member
ptr->menber 等于 (*ptr).menber
#include <iostream>
#include <string>
using namespace std;
class Person {
public:
string name;
int age;
void sayHi() {
cout << "Hi, 我是 " << name << ",今年 " << age << " 岁。" << endl;
}
};
int main() {
Person p; // 创建一个实例
// 栈上分配内存,调用构造函数,p变成一个对象的实例
/*
栈内存:
┌─────────────────────────┐
│ p │ ← 这是一个完整的 Person 实例
│ name = "" │
│ age = 20 │
└─────────────────────────┘
*/
p.name = "小明";
p.age = 20;
// 创建一个指针,指向 p
Person* ptr = &p;
// 用 * 解引用访问
(*ptr).sayHi();
// 用 -> 简写访问
ptr->sayHi();
return 0;
}
-
Person* ptr = &p;→ptr是指向p的指针 -
(*ptr).sayHi();→ 解引用ptr得到p,然后调用sayHi -
ptr->sayHi();→ 等价写法,更简洁

被折叠的 条评论
为什么被折叠?



