const 修饰函数的有关问题

const 修饰函数的问题void func(){}const是只被这样的对象调用么 class F{}const F a;[解决办法]class A{p

const 修饰函数的问题
void func(){}const   是只被这样的对象调用么 class F{}  const F a;
[解决办法]

class A
{
public:
  void fun(){}
  void fun_const() const{}
  void fun_volatile() volatile{}
  void fun_const_volatile() const volatile{}
};

int main()
{
    
    A a;//可以对a调用一切可见的成员函数

    a.fun();//OK;
    a.fun_const();//OK;
    a.fun_volatile();//OK;
    a.fun_const_volatile();//OK;
    
    A const ca;//只能调用ca的const成员函数

    ca.fun();//错误!不能调用non-const成员函数
    ca.fun_const();//OK;
    ca.fun_volatile();//错误!不能调用non-const成员函数
    ca.fun_const_volatile();//OK;

    A volatile va;//只能调用va的volatile成员函数

    va.fun();//错误!不能调用non-volatile成员函数
    va.fun_const();//错误!不能调用non-volatile成员函数
    va.fun_volatile();//OK;
    va.fun_const_volatile();//OK;
    
    A const volatile cva;//只能调用cva的const volitale 成员函数

    cva.fun();//错误!不能调用non-volatile、non_const成员函数
    cva.fun_const();//错误!不能调用non-volatile成员函数
    cva.fun_volatile();//错误!不能调用non-const成员函数
    cva.fun_const_volatile();//OK;
   return 0;
}