关于C ++中const和非const方法之间的区别,我有几个问题。
示例:
MyObject* MyClass::objectReference()
const MyObject* MyClass::objectReference() const
我的问题是:
答案 0 :(得分:5)
我不知道doxygen;虽然这就是我所知道的。
const
版本,则无法在const
对象上调用它。const
版本,则可以在const
和非const
对象上调用它。const
版本将在非const
个对象上调用,而const
版本将在const
个对象上调用。const
,则必须将对象转换为自身的const引用:static_cast<const MyClass&>(myObject).objectReference();
答案 1 :(得分:1)
虽然在const
实例上调用非const
方法可能并不明智。但是,如果要在非const
实例上调用const
方法,只需使用强制转换。有关示例,请参阅以下程序:
#include <iostream>
class ConstTest {
public:
void cows() const {
std::cout << "const method call" << std::endl;
};
void cows() {
std::cout << "non-const method call" << std::endl;
}
};
int main() {
ConstTest ct;
ct.cows(); // Prints "non-const method call"
static_cast<const ConstTest &>(ct).cows(); // Prints "const method call"
}