• const修饰成员函数 安静点


    常函数:

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

    常对象:

    • 声明对象前加const称该对象为常对象
    • 常对象只能调用常函数

     this指针的本质是一个指针常量,指针的指向不可修改 如果想让指针指向的值也不可以修改,需要声明常函数

    示例:

    class Person {
    public:
        Person() {
            m_A = 0;
            m_B = 0;
        }
    
        //this指针的本质是一个指针常量,指针的指向不可修改
        //如果想让指针指向的值也不可以修改,需要声明常函数
        void ShowPerson() const {
            //const Type* const pointer;
            //this = NULL; //不能修改指针的指向 Person* const this;
            //this->mA = 100; //但是this指针指向的对象的数据是可以修改的
    
            //const修饰成员函数,表示指针指向的内存空间的数据不能修改,除了mutable修饰的变量
            this->m_B = 100;
        }
    
        void MyFunc() const {
            //mA = 10000;
        }
    
    public:
        int m_A;
        mutable int m_B; //可修改 可变的
    };
    
    
    //const修饰对象  常对象
    void test01() {
    
        const Person person; //常量对象  
        cout << person.m_A << endl;
        //person.mA = 100; //常对象不能修改成员变量的值,但是可以访问
        person.m_B = 100; //但是常对象可以修改mutable修饰成员变量
    
        //常对象访问成员函数
        person.MyFunc(); //常对象不能调用const的函数
    
    }
    
    int main() {
    
        test01();
    
        system("pause");
    
        return 0;
    }
  • 相关阅读:
    软件工程结对编程作业
    软件工程第1次作业
    阅读一篇文章,培养一个习惯
    OpenvSwitch系列之五 网桥特性功能配置
    读《阿里工程师的自我修养》我学到这几点
    OpenvSwitch系列之四 ovs-ofctl命令使用
    OpenvSwitch系列之三 ovs-vsctl命令使用
    python进阶之垃圾回收
    OpenDaylight开发hello-world项目之功能实现
    python进阶之内存模型
  • 原文地址:https://www.cnblogs.com/anjingdian/p/16099808.html
Copyright © 2020-2023  润新知