当前位置: 首页 > news >正文

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修饰符,可以更好的表达设计意图,帮助编译器检查代码的正确性。

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

相关文章:

  • 详细介绍STM32(32位单片机)外设应用
  • 【CVPR2024-工业异常检测】PromptAD:与只有正常样本的少样本异常检测的学习提示
  • Redisson 的 RRateLimiter 限流
  • 值和引用类型在变量赋值时的区别是什么?(C#)
  • 【计算机网络】OSI模型、TCP/IP模型、路由器、集线器、交换机
  • Git-速查
  • ‌挖数据平台对接DeepSeek推出一键云端部署功能:API接口驱动金融、汽车等行业智能化升级
  • 便携式动平衡仪Qt应用层详细设计方案(基于Qt Widgets)
  • C#贪心算法
  • 食物照片识别卡路里(深度学习)
  • Android KMP初探
  • 每天一个Flutter开发小项目 (2) : 构建实用的待办事项列表应用
  • 最简单的随机森林的模型
  • 工程师 - VSCode的AI编码插件介绍: MarsCode
  • JavaE E基础之 Tomcat与Http (上)
  • BOOST电路设计
  • 网络安全防护指南:筑牢网络安全防线(510)
  • 网络空间安全(3)web渗透测试学习框架
  • C# 从基础神经元到实现在0~9数字识别
  • Linux信号