C ++编译器可以假设一个const bool&价值不会改变?
C ++编译器可以假设'const bool&'价值不会改变?
例如,假设我有一个类:
class test {
public:
test(const bool &state)
: _test(state) {
}
void doSomething() {
if (_test) {
doMore();
}
}
void doMore();
private:
const bool &_test;
};
我用它如下:
void example() {
bool myState = true;
test myTest(myState);
while (someTest()) {
myTest.doSomething();
myState = anotherTest();
}
}
是否允许编译器的标准假设_test的值不会改变。
我想不是,但只是想确定。
没有找到相关结果
已邀请:
3 个回复
才脊烽馈低
并不能阻止其他人使用非
引用。像这样:
甚至更简单:
佩疵瓦
表示“
的值不能通过此引用来改变” - 但它可能会被其他直接访问引用值的代码(或通过非const引用或指针)更改。
也是如此:“ѭ9指向的值不能通过指向它的指针改变。
郸身
的referand的值可能会在
的实现中被修改,这在编译时是不可用的。因为在这种情况下,
不是一个const对象,所以对于
来说,抛弃const并修改它是有效的(例如)。注意有效,不可取;-) 通常,
可能会调用具有其他指针/引用的函数,这些函数由另一条路径指向同一个
对象。在您的示例中,没有其他引用,因此如果编译器可以看到可能引用它的所有代码(包括
的定义),并且它们都没有修改该值,那么它可以做出假设。