像这样的问题往往会增强我遵循 Dan Saks 建议的决心,正如这篇“与大师的对话”文章中所述:http ://www.drdobbs.com/conversationsa-midsummer-nights-madness/184403835 。
特别是它处理 const 的位置如何改变事物。(*) 我意识到我极不可能将任何人从写作转换const int ...
为int const ...
,但也就是说,我更喜欢后者是有一个原因的。
(*) 包含一个注意事项,即在一开始就将 const 与类型声明交换是一个没有效果的更改。
它使可读性变得非常容易,因为对于
const
声明中单词的任何实例,它左侧的所有内容都是 const 的类型,而右侧的所有内容实际上都是 const。
考虑如下声明:
int const * * const pointerToPointer;
第一个const
声明指针链末尾的整数是 const,它们可以在* * const pointerToPointer
. 同时,第二个声明指向 const int 的指针类型的对象也是 const 并且该对象是pointerToPointer
.
在OP的情况下:
int const MyClass::showName(string id){
...
}
const 的类型是 int,而 const 是函数的返回值。
同时:
int MyClass::showName(string id) const {
...
}
这里const的类型是function(string)返回int,而const是函数本身,即函数体。