• const int *const method(const int *const &param) const;


    const int *const method(const int *const &param) const;
      1          2            3          4             5

    1:const int

    常量整型(值不能被修改)

    2:*const

    常量指针(指向的对象不能被修改)

    1和2结合起来:const int *const method();

    返回指向常量整型的常量指针。

    3:同1

    4:同2

    3和4结合起来:const int *const &param

    形参为指向 指向常量整型的常量指针的 引用。

    5:method() const;

    调用该方法,不会改变该类内部非 mutable 成员。

    从 const 成员函数返回 *this。在普通的非 const 成员函数中,this 的类型是一个指向类类型的 const 指针。在 const 成员函数中,this 的类型是一个指向 const 类类型对象的 const 指针。(C++ Primer 中文第四版 P377)

     ==============================================================================================

    其他关于 const 的知识点:

    1、非 const 变量默认为 extern。要使 const 变量能够在其他的文件中访问,必须显示地指定它为 extern。

    2、const 引用:指向 const 对象的引用。非 const 引用只能绑定到与该引用同类型的对象。const 引用则可以绑定到不同但相关的类型的对象或绑定到右值。

    3、const 对象的动态数组。如果我们在自由存储区中创建的数组存储了内置类型的 const 对象,则必须为这个数组提供初始化:

    // 内置类型
    const int *pci_ok = new const int [100]();
    // 类类型必须提供默认构造函数
    const string *pcs = new const string[100];

     4、const 形参。如果函数使用非引用的非 const 的形参,则既可以给函数传递 const 实参也可以传递非 const 的实参。如果形参为非引用的 const 形参,则在函数中,不可以改变实参的局部副本。但传递的实参的形式同之前一样。

     5、对于

    void fcn(const int i) {}
    void fcn(int i) {}

    编译器认为 fcn(int i) 重定义,这是为了兼容C。

     6、如果使用引用形参的唯一目的是避免复制实参,则应将形参定义为 const 引用。

     7、应该将不需要修改的引用形参定义为 const 引用。普通的非 const 引用形参在使用时不太灵活。这样的形参既不能用 const 对象初始化,也不能用字面值或产生右值的表达式实参初始化。

     ==============================================================================================

    对于读含有 const 的表达式的技巧:从右往左读。

    一般形式为“类型 + const”或者“* + const”形式,对于表达式首的 const 一般可以把“const + 类型”转成“类型 + const”。


    /**************************************************************************
                      原文来自博客园——Submarinex的博客: www.cnblogs.com/submarinex/               
      *************************************************************************/

  • 相关阅读:
    To be a master II.
    To be a master.
    快速排序
    选择排序
    冒泡排序
    Myeclipse 2013 Pro 激活工具
    Java多线程
    设计模式:动态代理
    面向对象
    新安装mysql修改密码,远程访问授权
  • 原文地址:https://www.cnblogs.com/submarinex/p/2939984.html
Copyright © 2020-2023  润新知