У меня судорога мозга:C++: константные Летучие методы
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 structs/classes должны иметь квалификатор volatile
для этих методов.
Вот мой вопрос: если я создам такой класс, и я опубликую его для использования другими программными подпрограммами, каковы причины, по которым я бы добавил или не добавил изменчивый классификатор метода?
Это потому, что метод помеченный volatile
говорит компилятору не принимать какие-либо из ее членов не volatile
, в целях оптимизации, в то время как, если метод не помечен volatile
, то все члены не помечена volatile
могут быть оптимизированы?
Возможный дубликат [C++ - Что представляет собой volatile при применении к методу?] (Http://stackoverflow.com/questions/5106196/c-what-does-volatile-represent-when-applied-to-a -method) –