在我在网上找到的以下示例中,提到了
const_cast
的一个优点是它允许常量函数更改类成员。这对我来说是一个问题。为什么我们应该通过const
来规定一个函数,然后用const_cast
打破这个规定呢?这不是像作弊吗?不设置const
对于函数来说不是更好吗?#include <iostream>
using namespace std;
class student
{
private:
int roll;
public:
student(int r):roll(r) {}
// A const function that changes roll with the help of const_cast
void fun() const
{
( const_cast <student*> (this) )->roll = 5;
}
int getRoll() { return roll; }
};
int main(void)
{
student s(3);
cout << "Old roll number: " << s.getRoll() << endl;
s.fun();
cout << "New roll number: " << s.getRoll() << endl;
return 0;
}