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/               
  *************************************************************************/

原文地址:https://www.cnblogs.com/submarinex/p/2939984.html