zoukankan      html  css  js  c++  java
  • 条款1:指针与引用

    引用区别于指针的一个首要特点就是不存在null reference,一个引用必然代表一个对象。

    char *pc=0;

    char& rc=*pc;

    上面这种形式在C++中属于未定义行为。

    引用初始化后将一直代表初始化时的对象,无法更改。而指针可以在使用中更改指向的对象,也可以指向null。因而在使用中无需检验引用的有效性,而需要对指针进行检测是否为null后才能解指针。

    string s1("Nancy");

    string s2("Clancy");

    string &rs=s1;     //rs代表s1

    string *ps=&s1;   //ps指向s1

    rs=s2;                //rs依旧代表s1,但s1的值变为s2的值

    ps=&s2;              //ps指向s2

    基于上面的差异,当代表的对象不会更改时(不是指对象的值),应该选用引用;而当希望指向不同对象甚至null时,应该使用指针。

    还有一种常见的情况需要使用引用:operator[]。这个操作符需要返回能被赋值的对象,也就是左值变量,一般返回引用。

    结论:

    当你知道你需要指向某个对象,而且绝不会改变指向其他对象,或是当实现一个操作符而语法需求无法由指针实现,就选用引用。其他情况采用指针。

  • 相关阅读:
    冒泡排序
    三种for循环遍历
    打印一年中的月历
    基于主主复制的mysql双机热备+keepalived实现高可用性
    docker实现apache+php容器和mysql容器独立运行
    XML和JSON
    PHP表单
    【翻译-Docker】Post-installation steps for Linux
    【翻译】docker install
    小计划
  • 原文地址:https://www.cnblogs.com/haoliuhust/p/4821550.html
Copyright © 2011-2022 走看看