关于C++中常量与非常量版本之间的区别,我有几个问题。C++中常量与非常量版本的方法之间的差异
例子:
MyObject* MyClass::objectReference()
const MyObject* MyClass::objectReference() const
我的问题是:
- 有什么办法都来区分该方法的版本之间手动叫什么名字?或者它是完全/完全自动的,如果有的话,确定哪个版本被调用的规则是什么?
- 与(1)相关,如果不能区分是调用常量还是非常量版本,那么就不可能从另一个方法调用一个方法的一个版本来防止重复?
如何在使用doxygen的方法之一的文档中创建一个版本或另一个版本的链接? (例如“myMethod的const版本()。”或“myMethod()的非常量版本”)。我自己发现了这一点 - 只需在方法签名末尾添加或省略“const”即可。
我建议* * 3 *做一个不同的问题 - 最后是Doxygen特定的,而前者是一般的C++问题。分开*#1 *和*#2 *可能会更好。 – 2010-08-04 02:55:59
#2只是#1的一个特例,其中所讨论的对象是'this'指向的对象。不过,我绝对同意#3应该有自己的问题。 – bcat 2010-08-04 02:58:29
@bcat:嗯,因此*可能* - 实现共享本身就是一个有趣的问题:[#1](http://stackoverflow.com/questions/407100/calling-a-const-function-from-a非常量对象),[#2](http://stackoverflow.com/questions/1333849/how-to-generate-a-non-const-method-from-a-const-method),[# 3](http://stackoverflow.com/questions/856542/elegant-solution-to-duplicate-const-and-non-const-getters),... :) – 2010-08-04 03:07:30