C++ 常对象 常函数 学习笔记

#include <iostream>

using namespace std;

class Person
{
public:
    Person()
    {}
    void showPerson()const//加了修饰只读属性的const关键字 则为常函数
    {
        //m_A = 100;//报错 表达式必须是可修改的左值
        //相当于 this->m_A = 100;
        //this指针的本质是一个指针常量  指针常量的指向是不可以修改的
        //当初始化了一个对象,并在成员函数里面用到了对象,相当于Person * const this
        //当this = null 这样的情况是不允许的 因为指针常量的指向是不可以被修改的
        //如果我们想this指针指向的值也不可以修改 则 const Person * const this
        //同理 当我们用const修饰了成员函数 则this指针指向的值也是不可以修改的

        m_B = 123;//不报错,因为加了关键字mutable 表示这个变量是特殊的
    }
    void func()
    {

    }

    int m_A;
    mutable int m_B;
};

void test01()
{
    //const Person p1;
    //没有提供的默认构造函数的情况下默认初始化const类型为“const Person”的对象
    const Person p1;
    //p1.m_A = 100; //常对象不允许修改属性
    p1.showPerson();//可以调用常函数,但是在常函数中不可以修改属性,除特殊属性mutable
    //p1.func();//常对象不可以调用普通成员函数 因为在普通成员函数中对象的值是可以被修改的 和常冲突
}

int main()
{
    //const修饰成员函数 //const 修饰只读状态的关键字
    //常函数
        //成员函数后加const后称这个函数为常函数
        //常函数内不可以修改成员属性
        //成员属性声明时加关键字mutable后 在常函数中依然可以修改
    //常对象
        //声明对象前加const关键字称该对象为常对象
        //常对象只能调用常函数
    cout << "Hello World!" << endl;
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值