我要求将非成员函数设为常量,即我想强制执行它不得允许对全局变量进行任何修改。
我知道非成员函数是不可能的,但想知道是否有解决方法。
我正在考虑的一种方法是声明一个单独的类,其中包含一个常量成员函数,并访问常量全局变量。但不幸的是,它允许在常量成员函数中访问和修改非常量全局变量(为什么??)。
最佳答案
类 T
的成员函数上的 const
限定符并不意味着该函数没有副作用:它意味着该函数的隐式 this
参数的类型为 const T*
。换句话说,该函数不能修改非静态数据成员(嗯,无论如何都不容易)。
没有标准的方法来强制函数没有副作用(所谓的“纯”函数)。
关于c++ - 使非成员函数常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17684301/