gpt4 book ai didi

c++ - 可变含义逻辑常量是否存在任何强制机制?

转载 作者:行者123 更新时间:2023-11-28 06:48:16 26 4
gpt4 key购买 nike

C++ 关键字 mutable 让我们在 const 对象中拥有非常量成员。这就提出了一个问题,‘什么?为什么?!',这已经在 SO 上得到解决。

Does the 'mutable' keyword have any purpose other than allowing the variable to be modified by a const function?

选择的答案是可变的正确用法是表示逻辑常量而不是按位常量。关于 SO 的其他几个问题和答案也提出了同样的观点。我从概念上喜欢这些答案,但它们有什么意义吗?

据我所知,C++ 中没有机制可以在允许按位可变性的同时强制执行逻辑常量。从表面上看这个想法,使用可变将要求编译器推断对可变成员的任何可能写入是否会导致相等运算符计算为 false,这很愚蠢。

Herb Sutter 的博客确实证实逻辑常量至少是可变的意图

http://herbsutter.com/2013/05/24/gotw-6a-const-correctness-part-1-3/

” 类似地,在成员变量上写 mutable 意味着它一直意味着:该变量是“可写但逻辑上是常量”。 "

这仅仅是一个意图吗?该标准本身对可变的内容非常简洁,我找不到“逻辑上常量”的定义。

曾经是否存在这样一种情况,即违反“逻辑上 const”的写入 const 对象的可变成员不仅仅是一种美学上令人不快的设计?

最佳答案

“逻辑常量”不能仅由相等来确定。它还可能包括排序和任何哈希函数(包括其他翻译单元中的免费函数)。编译器没有合理的方法来确定究竟是什么促成了逻辑常量性,因此它无法确定是否有任何可变成员会影响这种常量性。

关于c++ - 可变含义逻辑常量是否存在任何强制机制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24528890/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com