CPP学习之——访问堆中的数据成员(8.13)

一 概述

假如我们要访问对象的数据成员和函数,我们使用成员运算符".",访问指针对象的成员运算符用成员指针运算符"->"

二 代码及结果输出

2.1 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<iostream>
using namespace std;
class Human
{
private:
int i;
public:
Human(){cout<<"构造函数执行中..."<<endl; i=999;}
~Human(){cout<<"析构函数执行中..."<<endl;}
int get() const{return i;}
};

int main()
{

Human Jack;
cout<<Jack.get()<<endl;

Human *p=new Human;
cout<<(*p).get()<<endl;
cout<<p->get()<<endl;

return 0;
}

2.2 输出结果

1
2
3
4
5
6
构造函数执行中...
999
构造函数执行中...
999
999
析构函数执行中...

2.3 代码说明

  • (*p).get():使用括号是为了保证先使用"*"号读取p的内存地址中的值,即堆中对象,然后再使用成员运算符"."来访问成员函数get().
  • 但是这样做会比较麻烦,因此C++专门为用指针来间接访问对象的成员设置了一个运算符——成员指针运算符"->"。该符号可以实现读取对象的内存地址并且访问该对象的成员的作用。