const修饰成员函数

1.介绍

  • 成员函数后加const称为常函数。
  • 常函数内不可以修改成员属性。
  • 成员属性声明时加关键字mutable后,即使在常函数中依然可以进行修改。
  • 声明对象前加const称为常对象。
  • 常对象只能调用常函数
  • this指针的本质是指针常量。(引申:指针常量:指针的指向不可修改,指针指向的值可以修改。常量指针:指针指向可以修改,指针指向的值不可修改)

2.上代码

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
class Person {
public:
    Person(int a,int b) {
        this->a = a;
        this->b = b;
    }
    void Persons() const{
        /*this的创建相当于Person* const this,在常函数中相当于又添加了一个const,
        即:const Person* const this.这时this的指向与指向的值均不可以修改*/
        this->a = 5;//错误
        this->b = 5;//正确
    }
    void Personss() {

    }
    int a;
    mutable int b;
};
int main() {
    const Person p1(5, 6);
    p1.a = 3;//错误,左值不可修改
    p1.b = 3;//正确,b有mutable修饰
    p1.Personss()//错误,常对象只能调用常函数,以为不能确定普通成员函数是否会修改常对象的属性
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值