使非成员函数不变

Sak*_*ham 1 c++ constants

我要求将非成员函数设为常量,即我想强制它不允许对全局变量进行任何修改.

我知道非成员函数是不可能的,但是想知道是否有解决方法.

我想的一种方法是为此声明一个带有常量成员函数的单独类,并访问const全局变量.但不幸的是,它允许在常量成员函数中访问和修改非常量全局变量(为什么??).

Cas*_*sey 6

一个const一类的成员函数-qualifier T并不意味着功能没有副作用:这意味着函数的隐含this参数有型const T*.换句话说,该函数不能修改非静态数据成员(好吧,不管怎么说都不容易).

没有标准的方法来强制函数没有副作用(所谓的"纯"函数).