C++常量成员函数定义与使用

1.介绍

        在C++中,函数定义后加const修饰符表示该成员函数是一个常量成员函数。这种函数承诺不会修改调用它的对象的状态。具体来说,常量成员函数不能修改类的任何非静态成员变量,也不能调用任何非常量成员函数。

2.使用语法

class MyClass {
public:
    void myFunction() const; // 常量成员函数
};

3.特点

        (1)不修改对象状态:常量成员函数不能修改类的非静态成员变量。(除非变量被声明为mutable)。

        (2)调用限制:常量成员函数只能调用其他常量成员函数,不能调用非常量成员函数。

        (3)对象调用:常量成员函数可以被常量对象和非常量对象调用,但非常量成员函数只能被非常量对象调用。

4.示例

class MyClass {
public:
    int value;

    // 常量成员函数
    void printValue() const {
        std::cout << "Value: " << value << std::endl;
        // value = 10; // 错误:不能修改成员变量
    }

    // 非常量成员函数
    void setValue(int newValue) {
        value = newValue;
    }
};

int main() {
    const MyClass obj1;
    obj1.printValue(); // 正确:常量对象可以调用常量成员函数
    // obj1.setValue(5); // 错误:常量对象不能调用非常量成员函数

    MyClass obj2;
    obj2.printValue(); // 正确:非常量对象可以调用常量成员函数
    obj2.setValue(10); // 正确:非常量对象可以调用非常量成员函数

    return 0;
}

5.注意事项

        (1)如果成员函数逻辑上不会修改对象状态,应该将其声明为const,这样可以提高代码的安全性和可读性。

        (2)如果需要在常量成员函数中修改某些成员变量,可以将这些变量声明为mutable。例如

class MyClass {
public:
    mutable int counter; // 可以在常量成员函数中修改

    void increment() const {
        counter++; // 正确:counter 是 mutable 的
    }
};

        通过使用const修饰符,可以更好的表达设计意图,帮助编译器检查代码的正确性。

如有错误,敬请指正!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值