易失性关键字在C++中成员函数声明中的位置
Position of volatile keyword in member function declaration in C++
'
volatile'关键字在方法声明中的定位会影响其功能吗?
即,以下两段代码之间有什么区别吗?
一个。
class Test
{
public:
volatile void testMe()
{
}
};
二.
class Test
{
public:
void testMe() volatile
{
}
};
当成员函数具有返回值时也是如此。谢谢!
它与
const
限定符相同。
在第一个示例中,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
,因此可以在类Test
的非常量和非易失性实例上调用它。无法在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
(就像你的第二个代码一样)。
相关文章:
- 声明指针时更改星号的位置
- 我们可以在声明中的任何位置放置"typedef"说明符吗?
- 使用 (c++11) 声明类型时放置 __declspec(dllimport) 关键字的位置
- ClangTool 如何获取变量声明中模板参数的位置?
- 在C++中声明使用的位置是否有良好做法
- C 1Z标准如何定义模板功能声明中属性的正确位置
- 如何在另一个类函数中使用类,而不依赖于它在C++中的声明位置
- 在C 中的类声明和实现的位置混淆
- 会员声明中的位置打破代码
- 在声明中可以放置存储类说明符的位置
- 说明 资源路径位置类型 'UINT16_MAX' 未在此范围内声明
- 变量声明位置的编译器优化
- 为什么需要在多个位置声明一个函数
- 全局声明QStringlist变量,使用QFileDialog获取位置路径并将其打印到lineEdit并在QProces
- 仅在 Eclipse 中不识别在一个位置的 ofstream 声明
- 易失性关键字在C++中成员函数声明中的位置
- basic_string不允许在<TCHAR>声明的位置之外进行定义
- 虚关键字在函数声明中的位置
- C++:非成员函数的定义/声明的位置
- 声明变量(内存中的精确位置)