Item1 指针与引用的区别

1、指针可以置空,但不存在指向空值的引用。所以引用首次出现的地方必须初始化,后期使用的时候不用测试它的合法性;

string& rs; // 错误,引用必须被初始化
string s("xyzzy"); string& rs = s; // 正确,rs 指向 s

string *ps; // 未初始化的指针合法但危险【指针没有这样的限制】

void printDouble(const double& rd)
{
    cout << rd; // 不需要测试 rd,它肯定指向一个 double 值

void printDouble(const double *pd)
{
    if (pd) { // 检查是否为 NULL
        cout << *pd;
    }
}
 

2、指针与引用的另一个重要的不同是指针可以被重新赋值以指向另一个不同的对象。但是引用则总是指向在初始化时被指定的对象,以后不能改变。

string s1("Nancy");
string s2("Clancy");
string& rs = s1; // rs 引用 s1
string *ps = &s1; // ps 指向 s1


rs = s2; // rs 仍旧引用 s1,但是 s1 的值现在是 "Clancy"【赋值函数】
ps = &s2; // ps 现在指向 s2,s1 没有改变
 

猜你喜欢

转载自blog.csdn.net/CherishPrecious/article/details/81705978