• 11. const 修饰成员函数


    • const 限定只读,对函数的实参进行保护
    • 常数据成员:必须出现在类的定义体中,常数据成员必须进行初始化,并且不能被更新,但常数据成员的初始化只能通过构造函数的初始化列表进行

    1. 常函数

    成员函数加const 后我们称为这个函数为常函数

    • 常函数内不可以修改成员属性
    • 成员属性声明时加关键字 mutable 后,在常函数中依然可以修改

    2. 常对象

    声明对象前加 const 称该对象为常对象

    • 常对象只能调用常函数,常对象只能调用它的成员函数,不能调用其他成员函数,只有常成员函数才有资格操作常量或常对象
    #include <iostream>
    using namespace std;
    //常函数
    class Person
    {
    public:
        //在成员函数后面加const,修饰的是this 指向,让指针指向的值也不可以修改
        void showperson() const //加上const其值不可修改
        {
        //  this->m_a =100; 报错
            this->m_b =100;
            //this 本质是指针常量
            //Person *const this ;this指针的指向是不可以修改的
        }
        voi func()
        {
            m_a=100;
        }
        int m_a;
        mutable int m_b;//特殊变量,即使在常函数中,也可以修改这个值,加关键字mutable
    };
    void test01()
    {
        Person p;
        p.showperson();
    }
    // 常对象
    void test02()
    {
        const Person p; //常对象
      //p.m_a = 100; //报错
        p.m_b = 100; //m_b是特殊值,在常对象下也可以修改
    
        //常对象只能调用常函数
        p.showperson();
      //p.func(); //常对象去调用普通成员函数,因为普通成员函数可以修改属性,报错
    }
    int main()
    {
        test01();
        test02();
        system("pause");
        return 0;
    }
    
    哪有什么胜利可言,坚持意味着一切
  • 相关阅读:
    前端面试题
    Less 中的嵌套规则与 & 符号的使用
    组件的生命周期
    222
    221
    twemproxy代理memcache(3)
    memcache数据迁移与解决方案(2)
    mencache的原理与应用(1)
    yield推荐,理解协程的最佳入口
    上下文管理器的实现
  • 原文地址:https://www.cnblogs.com/BY1314/p/12821930.html
Copyright © 2020-2023  润新知