繁体   English   中英

为什么volatile对象不能调用非易失性成员函数

[英]why can't a volatile object call nonvolatile member function

为什么volatile对象不能调用非易失volatile成员函数?

在的情况下const ,是非常有意义的调用非const成员函数违反对象的常量性 ,因此它被禁止。 为什么volatile

在const的情况下,调用非const成员函数违反了对象的常量是有道理的,因此它是被禁止的。 但为什么在波动?

对于不稳定的情况也是如此。 易失性意味着对对象的每次访问都是可见的副作用,无法消除。 如果在易失性对象上调用非易失性方法,则会违反此属性(因为非易失性方法会将对象视为普通对象)。 因此,这是不可能的。

从标准:

7.1.5.1。 如果尝试通过使用具有非volatile-quailified类型的左值来引用使用volatile-quailified类型定义的对象,则程序行为是未定义的。

我猜你的编译器发布了一个错误来防止未定义的行为。 标准陈述应该是足够的理由。

volatile限定符的工作方式与const工作方式相同。 要了解可以做些什么 ,请看看这篇Alexandrescu文章 那篇文章也应该让你对原因有所了解。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM