问题标签 [const-method]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
3510 浏览

c++ - 在 c++ 中,为什么编译器在 const 也可以工作时选择非常量函数?

例如,假设我有一个类:

在代码的其他地方,我有这样的东西:

有谁知道为什么编译器会在这种情况下选择非常量版本?

这是一个有点做作的例子,但我们试图解决的实际问题是定期自动保存一个对象,如果它已经改变,并且指针必须是非常量的,因为它可能会在某个时候改变。

0 投票
13 回答
1164 浏览

c++ - 我应该将这些方法声明为 const 吗?

我正在处理一些 C++ 代码,其中我有几个具有私有方法的管理器对象,例如

它调用OnFooUpdated()此对象的侦听器上的方法。

请注意,它们不会修改此对象的状态,因此从技术上讲,它们可以成为const方法,即使它们通常会修改整个系统的状态。特别是,侦听器对象可能会回调该对象并对其进行修改。

就我个人而言,我想让它们保持原样而不是声明它们const

但是,我们的静态代码检查器 QAC 将此标记为偏差,因此我必须声明它们const,或者我必须争论为什么它们应该保持非常量并获得偏差许可。

不声明这些方法的论据是什么const
还是我应该遵循 QAC 并声明它们const
我应该采用仅限于此对象的严格局部观点,还是将系统视为一个整体?

0 投票
5 回答
2548 浏览

c++ - const 成员函数只能调用 const 成员函数吗?

const 成员函数是否只调用 const 成员函数?

如果我不将 compute() 设为 const,则编译器会抱怨。是不是因为不允许 const 成员函数修改成员,所以它不允许任何对非常量的调用,因为这意味着 const 成员函数将“间接”修改数据成员?

0 投票
5 回答
58461 浏览

c++ - C++ - 为什么不能用'const'限定符创建静态成员函数

今天我遇到了一个问题。我需要一个static成员函数,const不是必须的而是更好的。但是,我的努力没有成功。谁能说出为什么或如何?

0 投票
4 回答
23556 浏览

c++ - 调用 const 函数而不是其非 const 版本

为了我的目的,我尝试包装类似于 Qt 的共享数据指针的东西,经过测试,我发现应该调用 const 函数时,选择了它的非 const 版本。

我正在使用 C++0x 选项进行编译,这是一个最小的代码:

如您所见,Data.x 是一个 const 函数,因此调用的 operator -> 应该是 const 的。当我注释掉非常量时,它编译时没有错误,所以这是可能的。然而我的终端打印:

“非常量数据指针”

是 GCC 错误(我有 4.5.2),还是我遗漏了什么?

0 投票
2 回答
782 浏览

c++ - 如何在类中的静态变量上使用递减运算符

我有一个这样的类,我想在“getManagerNumber”中使用递减运算符让ManagerNumber减一,我该怎么办?

0 投票
1 回答
120 浏览

c++ - 一个 const 临时成员如何选择调用一个非 const 成员函数而不是一个 const 成员函数?

示例代码取自:http ://en.cppreference.com/w/cpp/types/add_cv (我稍作修改。)

输出是:

在第二次调用中,T是 const 合格T()的,所以应该调用 const 版本,对吗?还是我错过了一些特殊规则?

0 投票
1 回答
2245 浏览

c++ - const方法的const引用返回的线程安全

考虑这个类:

方法getVectorRef线程安全吗?

是否有可能在getVectorRef另一个线程的返回过程中弹出并调用insertElement,从而改变成员向量并且调用者getVectorRef得到错误的 const 引用?

两个 const 限定符(一个用于向量,另一个用于方法)在线程安全的上下文中没有意义吗?

0 投票
2 回答
791 浏览

c++ - 在非常量对象上,为什么 C++ 不调用具有 public-const 和 private-nonconst 重载的方法的 const 版本?

MSVC 2013 不喜欢这样:

如果我投到一个const参考,它的工作原理:

为什么我不能const在非const对象上调用该方法?

0 投票
3 回答
555 浏览

c++ - C++ 重载决议、转换运算符和 const

在这种情况下

情况很清楚 - f(int *) 被调用,这似乎是正确的。

但是,如果我有这个(错误地这样做了(*)):

运算符 char *() 被调用。我无法弄清楚为什么这样的决策路径会比使用运算符 bool() 更好。有任何想法吗?

(*) 如果将 const 添加到第二个运算符,则代码当然可以按预期工作。