C++ const类成员函数

本文详细介绍了C++中的常量成员函数的定义、作用及其特殊用途。首先讲解了如何定义常量成员函数,并说明了其在常对象上调用的规则。接着探讨了如何通过mutable关键字使常量成员函数能够修改特定的数据成员。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,常量成员函数的定义

在函数声明的后面加上const,就定义了一个常量成员函数,例如:

class List{
private:
    int length;
    int weight;
public:
    List(int l, int w){
        length = l;
        weight = w;
    }
    int getLength() const;   //常成员函数
    int getWeight();         //非常成员函数
};

在类外定义成员函数时,也要加上const关键字

int List::getLength() const{  //类外定义也要加上const关键字
    return length;
}
如果在常量成员函数中修改对象的数据成员,编译时会出错

int List::getLength() const{  
    return length ++;
}

 

二,常量成员函数的作用
const成员函数存在的意义在于它能被const常对象调用,而且常对象只能调用常成员函数。

const List list1(10, 10);   //定义一个常对象
list1.getLength();          //常对象调用常量成员函数
常对象不能调用非常成员函数,不然在编译时会出错

const List list1(10, 10);   //定义一个常对象  
list1.getWeight();          //常对象调用非常成员函数,在编译时会出错
非常对象可以调用常成员函数

List list1(10, 10);  //定义一个非常对象
list1.getLength();   //非常对象调用常成员函数


三,如何让一个const成员函数具有修改对象数据成员的能力

有些时候,我们却必须要让const函数具有修改某个成员数据值的能力。比如一些内部的状态量,对外部用户无所谓,但是对整个对象的运行却大有用处。遇到这种问题,我们可以把一个成员数据定义为mutable(多变的),它表示这个成员变量可以被const成员函数修改却不违法,例如:

class List{
private:
     mutable bool is_valid;
public:
    void checkList() const{
        if(is_valid){
            is_valid = false;
        } else {
            is_valid = true;
        }
    }
};

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值