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

【c++】常对象,常方法

【c++】常对象,常方法

const修饰的对象–>常对象

在 C++ 中,使用 const 关键字修饰的对象被称为常量对象。常量对象的特性如下:

  • 不可修改:一旦对象被声明为 const,其成员变量的值不能被修改。
  • 只能调用 const 成员函数:常量对象只能调用被声明为 const 的成员函数,不能调用const 成员函数。

示例

class MyClass {
public:
    void regularFunction() {
        // 非 const 成员函数,可以修改成员变量
    }

    void constFunction() const {
        // const 成员函数,不能修改成员变量
    }
};

int main() {
    const MyClass obj; // 声明常量对象
    obj.constFunction(); // 可以调用 const 成员函数 相当于 
    obj.regularFunction(); // 错误:不能调用非 const 成员函数
    return 0;
}

在上述示例中,obj 是一个常量对象,因此只能调用 constFunction,而不能调用 regularFunction
obj.regularFunction();里面,相当于MyClass*const this—>obj 指向obj 可以通过this指针修改 常对象obj 当然不可以

const 成员函数

成员函数后面的 const 关键字表示该函数是一个常量成员函数。其特性如下:

  • 不能修改成员变量:在常量成员函数内部,不能修改对象的成员变量。
  • 可以被常量对象调用:常量成员函数可以被常量对象和非常量对象调用

示例

class MyClass {
private:
    int value;
public:
    void setValue(int val) {
        value = val; // 可以修改成员变量
    }

    int getValue() const {
        return value; // 不能修改成员变量
    }
};

int main() {
    MyClass obj;
    obj.setValue(10); // 调用非 const 成员函数
    int val = obj.getValue(); // 调用 const 成员函数
    return 0;
}

在上述示例中,getValue 是一个常量成员函数,因此不能修改成员变量 value,而 setValue 是一个非常量成员函数,可以修改成员变量。

总结

  • 常量对象:使用 const 修饰的对象,不能修改其成员变量,只能调用常量成员函数。
  • 常量成员函数:在函数声明或定义的末尾加上 const,表示该函数不能修改成员变量,可以被常量对象和非常量对象调用。

http://www.kler.cn/a/537796.html

相关文章:

  • 【Java八股】JVM
  • ximalaya(三) playUriList值解密--webpack
  • 加速汽车软件升级——堆栈刷写技术的应用与挑战
  • java-初识List
  • Java版本与JDK版本
  • Go 中的 7 个常见接口错误
  • 【新书速荐】《Information-Theoretic Radar Signal Processing(信息论雷达信号处理)》
  • 【大数据技术】搭建完全分布式高可用大数据集群(Kafka)
  • 了解AI绘图,Stable Diffusion的使用
  • Visual Studio 进行单元测试【入门】
  • 线性dp-建造房屋
  • 使用按位或设计大小写字母转换的API
  • opencv图像处理
  • DeepSeek全栈使用指南(v2.3)
  • FPGA VGA timing
  • 【JVM详解一】类加载过程与内存区域划分
  • Jupyter Notebook自动保存失败等问题的解决
  • Mac上本地部署DeepSeek并使用Ollama提供API与Chatbox交互
  • 用docker在本地用open-webui部署网页版deepseek
  • 【系统设计】Spring、SpringMVC 与 Spring Boot 技术选型指南:人群、场景与实战建议
  • vxBus 总线结构的分析与应用
  • 人工智能-A* 算法与机器学习算法结合
  • HTMLCSSJS
  • LeetCodeHot 100 第一天
  • ubuntu conda运行kivy时报“No matching FB config found”
  • java文件上传粗糙版