const
帮助您隔离在您背后“改变事物”的代码。因此,在一个类中,您会将所有不会更改对象状态的方法标记为const
. 这意味着const
该类的实例将不再能够调用任何非const
方法。这样,您就不会意外调用可以更改对象的功能。
此外,const
它是重载机制的一部分,因此您可以拥有两个具有相同签名的方法,但一个有const
一个没有。一个const
被称为const
引用,另一个被称为非const
引用。
例子:
#include <iostream>
class HelloWorld {
bool hw_called;
public:
HelloWorld() : hw_called(false) {}
void hw() const {
std::cout << "Hello, world! (const)\n";
// hw_called = true; <-- not allowed
}
void hw() {
std::cout << "Hello, world! (non-const)\n";
hw_called = true;
}
};
int
main()
{
HelloWorld hw;
HelloWorld* phw1(&hw);
HelloWorld const* phw2(&hw);
hw.hw(); // calls non-const version
phw1->hw(); // calls non-const version
phw2->hw(); // calls const version
return 0;
}