如何判断一个方法是否修改了类?
我正在编写 C++ 代码,并且我有一个包含许多成员方法的类。例如,print()和act();前者不会修改类的内部结构(即变量i),而后者会。
class Example {
int i;
void act() { i++; };
void print() { };
在这种情况下这是显而易见的,但是对于较长的方法,或者定义和声明已经分开的方法,哪些方法可以改变对象并不明显。有没有一种方法可以明确表示方法是不可修改的?
(作为另一种语言的例子,在 CI 中可能会传递一个指向对象的指针。如果一个函数是非修改的,我会传递一个常量指针。)
回答
有没有一种方法可以明确表示方法是不可修改的?
是的。将其标记为const,例如:
void print() const;
这会将this方法体内的指针标记为指向一个const对象(即const Example *this)。任何通过该this指针修改该对象的尝试都会导致编译器错误。