CPP学习之——引用对象及空引用(9.4-9.5)

本节课,我们定义一个对象的别名

二 代码及结果

2.1 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<iostream>
using namespace std;
class Human
{
private:
int i;
public:
void set(int x) {i = x;}
int get() const {return i;}

};
int main()
{
Human Mike;
Human &rMike = Mike;
rMike.set(123);
cout << rMike.get();
return 0;
}

2.2 输出结果

1
123

2.3 说明

  • Human &rHuman=Human;不能这样定义。因为Human是一个类型,它没有具体的内存类型。所以我们不能定义一个它的别名
  • 注意:定义一个引用时,一定要同时对该引用进行初始化
  • 引用就像常量,只能对其进行初始化,不能赋值

三 空引用

  • 我们知道指针进行删除操作后,需要将它们赋为空,引用却不需要这么做,这是因为引用是原来对象的别名,假如该对象存放在栈中,那么再对象超出作用域时别名会和对象一起消失。假如该对象存放在堆中,由于堆中内存空间必须使用指针来访问,因此用不着别名,即使再定义一个该指针的别名,那么将指针删除并赋空之后,该指针的别名中的地址也相应的赋空了。