const的那些事

Posted on 2021-11-18 20:27  wwc小六子  阅读(28)  评论(0)    收藏  举报

1、常函数(限定只读状态):成员函数后加const,声明函数的格式如下:

  • 类型说明符 函数名(函数表) const;
  • 常函数内不可以修改成员属性;
  • 成员函数声明时加关键字 mutable后,在常函数中依然可以修改;
class Person
{
public:
    //this指针的本质   是指针常量   指针的指向是不可以修改的
        //在成员函数+const,等于给指针this加const
    // const Person * const this; 
    // 在成员函数后面加const,修饰的是this指向,让指针指向的值也不可以修改
    void showPerson() const
    {
        this->m_B = 100;
        this->m_A=100//错误不能改变数据成员
        //this=NULL;//this指针不可以修改指针的指向的
    }

    int m_A;
    mutable int m_B;//特殊变量,即使在常函数中,也可以修改这个值,加上关键字mutable
};

 2、常对象:常对象必须进行初始化,而且不能被更新

  • const 类型说明符 对象名;
  • 常对象只能调用常函数;
void test02()
{
    const Person p;//在对象前加const,变成常对象
    //p.m_A = 100;
    p.m_B = 100;//m_B是特殊值,在常对象下也可以修改

    //常对象只能调用常函数
    //p.fun();//常对象 不可以调用普通成员函数,因为普通成员函数可以修改属性
    p.showPerson();//调用常成员
}

 

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3