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[]。这个操作符需要返回能被赋值的对象,也就是左值变量,一般返回引用。

    结论:

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

  • 相关阅读:
    用户 'IIS APPPOOLPrivate' 登录失败。
    WCF 内置跟踪日志
    Ionic3 下拉刷新
    Ionic3 组件懒加载
    Ionic3 编程-应用启动进入引导页
    mysql数据库导入导出
    PHP-生成二维码(qr-code)
    javascript 总结(常用工具类的封装)
    Ajax跨域原理及解决方案
    封装获取连续数字的拼接
  • 原文地址:https://www.cnblogs.com/haoliuhust/p/4821550.html
Copyright © 2011-2022 走看看