前段时间我遇到了一些用mutable关键字标记类的成员变量的代码.据我所知,它只是允许您修改const方法中的变量:
class Foo
{
private:
mutable bool done_;
public:
void doSomething() const { ...; done_ = true; }
};
Run Code Online (Sandbox Code Playgroud)
这是这个关键字的唯一用途,还是有更多的东西比它的眼睛?我已经在一个类中使用了这个技术,标记为一个boost::mutex可变的允许const函数为了线程安全的原因锁定它,但是,说实话,这感觉有点像黑客.
可能重复:
为什么Java中没有Constant关键字?
为什么const关键字不在Java中使用?
你能看到在Java语法中使用一些传递const或不可变关键字的缺点,或者为什么选择常见的繁琐方法?
你能看到关闭请求的理由,Sun是否提供了任何解释?
可能重复:
为什么Java中没有Constant关键字?
我最近开始用Java开发,我想知道为什么关键字const没有实现,你必须在类中使用相当长的常量定义:
protected static final String VALIDATION_ERROR = "validationError";
Run Code Online (Sandbox Code Playgroud)
而不是预期的方式
const VALIDATION_ERROR = "validationError"
Run Code Online (Sandbox Code Playgroud)
是否有人可以指出我为什么你必须使用(或者没有在当前语法中使用它)前者而不是后者,因为后者假设前者?
在 C++ 中,可以使用const关键字来指示指向数据的指针或数据本身是常量(或两者),即
const SomeClass* p; // 数据是常量
或者
SomeClass* const p; // 指针是常量
或者
const SomeClass* const p; // 两者都是常数
在 Java 中,final 关键字的限制要大得多:
final SomeClass o; // 引用是常量,对象是可以改变的
我一直想知道为什么 Java 在这方面比 C++ 更有限。这是由语言设计者做出的决定(可能也有其他决定),还是有技术原因阻止它?
Java 对象由垃圾收集器管理这一事实在这里有影响吗?
我注意到constJava 中有关键字.它让我想起那里的事情static和final变数.
但是为什么没有人真正使用它而创建呢?