[英]Position of volatile keyword in member function declaration in C++
方法声明中'volatile'关键字的位置是否会影响其功能?
即,以下两段代码之间有什么区别吗?
一种。
class Test
{
public:
volatile void testMe()
{
}
};
B.
class Test
{
public:
void testMe() volatile
{
}
};
当成员函数具有返回值时,也是如此。 谢谢!
与const
限定符相同。
在第一个示例中, volatile
适用于函数的返回值。 在这种情况下,它是无效的,因此没有太大意义。 实际上,返回volatile值*并没有多大意义。 可变返回类型仅对引用有意义:
volatile int& foo() { ... }
volatile int& i = foo(); // OK
int j = foo(); // OK, use the volatile reference to construct a non volatile int
int& j = foo(); // Error!
在第二种情况下,这意味着,该方法是volatile
的,因此它可以在(非const)类的非易失性和易失性实例调用Test
。 没有volatile
限定符的类似方法无法在volatile
volatile
实例上调用。
Test test0;
test0.testMe(); // OK
volatile Test test1;
test1.testMe(); // OK
test1.someNonVolatileMethod(); // Error.
*除非该值是一个指针
适用于const
的相同规则也适用于volatile
。
当返回void
(而不是不返回)时, volatile
在第一个代码段中是无用的。
第二个片段将整个方法标记为volatile
。
例如,如果您有:
volatile Test m;
m.testMe();
仅将testMe
标记为volatile
(如第二个代码)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.