c++ - 在 C++ 中使用非 volatile 对象调用 volatile 成员函数

标签 c++ c++11 volatile member-functions

如果使用非 volatile 对象调用 volatile 成员函数会发生什么?

#include <iostream>
using namespace std;

class A 
{
private:
    int x;
public:
    void func(int a) volatile //volatile function
    {
        x = a;
        cout<<x<<endl;
    }
};

int main() 
{
    A a1; // non volatile object
    a1.func(10);
    return 0;
}

最佳答案

规则与const 成员函数相同。可以在非 volatile 对象上调用 volatile 成员函数,但不能在 对象上调用非 volatile 成员函数code>volatile 对象。

对于您的情况,A::func() 将被正常调用。如果相反,编译将失败。

class A 
{
private:
    int x;
public:
    void func(int a) // non-volatile member function
    {
        x = a;
        cout<<x<<endl;
    }
};

int main() 
{
    volatile A a1;   // volatile object
    a1.func(10);     // fail
    return 0;
}

关于c++ - 在 C++ 中使用非 volatile 对象调用 volatile 成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45436071/

相关文章:

c++ - 如何在 C++ 中启动另一个程序而不必等待它?

c++ - 在变量或字段 'printVector' 声明为 void 之前缺少模板参数

c++ - 为什么参数包扩展在不同的 C++ 编译器中的工作方式不同?

c++ - std::async 使用同一个线程,我的代码没有实现并行。

c++ - 在 C 中递增一个 volatile 变量

java - volatile 和原子之间的区别

c# - 使闭包捕获的变量易变

c++ - 关于变量初始化的代码示例是否正确?

c++ - OpenGL + SDL2 黑屏

c++ - constexpr 函数和硬编码参数