c++ - 使非成员函数常量

标签 c++ constants

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

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

我正在考虑的一种方法是声明一个单独的类,其中包含一个常量成员函数,并访问常量全局变量。但不幸的是,它允许在常量成员函数中访问和修改非常量全局变量(为什么??)。

最佳答案

T 的成员函数上的 const 限定符并不意味着该函数没有副作用:它意味着该函数的隐式 this 参数的类型为 const T*。换句话说,该函数不能修改非静态数据成员(嗯,无论如何都不容易)。

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

关于c++ - 使非成员函数常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17684301/

相关文章:

java - 具有 const 参数的不可变对象(immutable对象)是否会被优化为仅由 Kotlin 编译器实例化一次

c++ - 类/成员函数中的函数原型(prototype)

c++ - 为什么 malloc_trim() 只适用于主场?

c++ - 将 auto_ptr 与 new char[n] 一起使用是否错误

php - 尝试在php类中给常量赋值会导致意外的T_variable

ios - 链接器失败,错误代码为 1

c++ - 错误 : assignment of member ‘x::x’ in read-only object

c++ - 在 C++ 中调用 ASM 函数

c++ - 在 C++ 中实现变量约束

c++ - 我们需要 std::as_const() 做什么?