const int *const method(const int *const ¶m) const;
const int *const method(const int *const ¶m) 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 ¶m
形参为指向 指向常量整型的常量指针的 引用。
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/               
 
*************************************************************************/