C++引用存在的意义 | 为什么C++要引入引用

有了指针,C++为什么还要引入引用? #

前言 #

C++已经从C语言处继承了指针,既然有了指针,那C++为什么还要引入引用呢?减少拷贝动作?指针也可以。
本文不介绍什么是指针,什么是引用,也不介绍指针和引用的区别,这些你可以去我之前的文章查看。本文只介绍C++引入引用的原因。

直接原因 #

为了支持运算符重载。直接看示例代码:

void f1(const complex* x, const complex* y) { // 没有引用
    complex z = *x + *y; // 很丑
    // ...
}

void f2(const complex& x, const complex& y) { // 有引用
    complex z = x + y; // 更好
    // ...
}

从这两段代码就可以看出来,如果使用指针,两个对象做运算需要先解指针,很丑,而且如果为了健壮性,还需要判断是否空指针。而有了引用,代码更好看简洁,还更安全。

建议 #

应该使用引用还是指针?因为引用更安全方便,建议尽可能使用引用,必要时使用指针。当你不需要"重新赋值"时,通常更倾向于使用引用(指针才可以重新赋值,引用不可以)。

思考题 #

参数传值应该引用传递还是指针传递?或者值传递?

参考链接 #