问题标签 [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 投票
1 回答
320 浏览

c++ - 如果存在非 const 限定的私有方法,为什么不能在非 const 对象上调用 const 限定的方法?

以下代码无法编译:

错误:

g++ (tdm64-1) 5.1.0 在 Windows 上使用。

我不明白为什么f当非 const 限定方法不可用时编译器无法回退到 const 限定方法?

我想不出允许编译器使用 const 限定方法而不是非 const 限定方法会使程序行为异常的上下文,有吗?如果不是,为什么不允许这样做?

编辑:

我已经看到了这个问题:在 c++ 中,为什么编译器在 const 也可以工作的情况下选择非常量函数?

但是在上面,这两种方法都可用,所以选择对我来说很清楚。就我而言,一种方法不可用,但编译器无法选择另一种方法,而是无法编译。

0 投票
5 回答
73 浏览

c++ - 如果 std::basic_string::operator[] 也是非常量方法,为什么它是 const 方法?

http://cplusplus.com/reference/string/basic_string/operator[]

我知道拥有第二个版本是有利的,该版本const在需要结果时返回以防止警告const并减轻强制转换,但如果该函数已经提供了非const方法(方法 - 不是结果),那么声明的意义何在const-结果方法const

0 投票
2 回答
160 浏览

c++ - 这会导致无限循环吗?

对于定义const函数的第二个版本,这样做是否保证安全?看起来它会有无限递归,因为我想返回const,但我要调用的另一个函数是非常量。

它适用于 g++,但我担心这是不安全的。

0 投票
2 回答
1484 浏览

c++ - const 方法返回对向量元素的非常量引用

我很难弄清楚如何从 const 类方法返回对 anon-const中元素的引用。std::vector我要做的一个简单的例子是,

我想要的行为是我希望能够执行以下操作,

Eigen给出了相同类型的行为,但我无法弄清楚如何让它工作。

0 投票
11 回答
7963 浏览

c++ - 当非常量方法是私有的时,为什么不调用公共 const 方法?

考虑这段代码:

编译器错误是:

错误:'void A::foo()' 是私有的。

但是当我删除私人的时候它就可以工作了。当非常量方法是私有的时,为什么不调用公共 const 方法?

换句话说,为什么重载解决在访问控制之前?这很奇怪。你认为它是一致的吗?我的代码有效,然后我添加了一个方法,我的工作代码根本无法编译。

0 投票
1 回答
22 浏览

inner-classes - 我不能用这个外部类的指针调用内部类的构造函数

我不知道为什么下面的代码无法编译并出现错误:

“没有构造函数实例“cb::iterator::iterator”与参数列表参数类型匹配:(int, const cb)”

但是当我取消注释第二个版本的构造函数时,代码编译得很好!为什么编译器认为*this是 const?

0 投票
0 回答
39 浏览

c++ - Xcode 无法将 const 方法识别为 const

我正在处理一个简单的分数类,并且我一直在重载各种运算符,它们都与我的除法运算符分开工作。由于某种原因,即使它像所有其他返回新 Frac 并且与 * 运算符几乎相同的运算符一样被标记为 const 方法 Xcode 抱怨候选函数不可行:“this”参数的类型为“const Frac”,但方法是未标记 const。我是否遗漏了一些东西,或者 Xcode 没有告诉我做我已经做过的事情?

0 投票
0 回答
57 浏览

c++ - c++ const member function that accepts modification of specified member variable (relaxed const)

I have the following class Sample. Say, I wanna perform some heavy computation using member variable var and cache the result in case I will do the same computation again. I also guarantee that non-cached variable var be const, and if not, I wanna get an error at the compilation time. So, what I want to do is to const-nize heavy_compuation in a way that mutation of only cache is accepted. Is there any way to do this kind of thing?

0 投票
1 回答
31 浏览

c++ - 在 const Class 函数中更改类指针的值会在某些编译器中产生错误,但在其他编译器中不会

我有下面的代码,它在某些编译器中给出了“分段错误”的错误,但对于其他编译器,它给出了“40”作为输出。为什么有区别?