C++ volatile限定符

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiongya8888/article/details/89304520

当对象的值可能在程序的控制或检测以外被改变时,应该将对象声明为volatile,关键字volatile告诉编译器不应该对作用的对象进行优化。

volatile int value;//该值可能发生改变

const和volatile限定符互相没什么影响,某种类型既可以是const也可以是volatile。volatile和指针之间也存在类似const和指针的关系(也适用于引用),我们可以声明volatile指针,指向volatile对象的指针,指向volatile对象的volatile指针。

volatile int value1;//volatile int
volatile int* value2;//指向volatile int的指针
int* volatile value3;//指向int的volatile指针
volatile int* volatile value4;//指向volatile int的volatile指针

const和volatile的一个重要区别是我们不能使用合成的拷贝/移动构造函数及赋值运算符初始化volatile对象或从volatile对象赋值,因为合成的成员接受的形参类型是const引用,而非volatile引用。如果一个类希望拷贝,移动,赋值它的volatile对象,则该类必须自定义拷贝或移动操作。

猜你喜欢

转载自blog.csdn.net/xiongya8888/article/details/89304520