我脑袋抽筋:
struct MyStruct
{
int x;
...
inline int getX1() const { return x; }
inline int getX2() const volatile { return x; }
};
volatile MyStruct myStruct;
我知道编译器会让我调用 myStruct.getX2() 而不会让我调用myStruct.getX1()
,因为在 volatile 结构/类上调用的方法必须volatile
在这些方法上有限定符。
这是我的问题:如果我创建了这样一个类,并发布它以供其他软件例程使用,我会在方法上添加或不添加 volatile 限定符的原因是什么?
是因为标记的方法volatile
告诉编译器不要假设它的任何成员不是volatile
,为了优化目的,而如果一个方法没有标记volatile
,那么任何没有标记的成员volatile
都可以优化?