XZ Blog XZ Blog
首页
  • 人体姿态估计
  • 2D-3D-Lifting
  • 动作质量评估
  • 基于RGBD视觉信息的异常行为识别
  • 基于RGB视频的行为识别
  • 大模型应用
  • 网络结构

    • Transformer
    • GCN
    • Graph Transformers
    • Diffusion Model
  • 深度学习
  • 论文解读
  • 后端开发
  • Git
  • 博客搭建
  • Debug
  • 面试
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

xzhouzeng

@渐行。
首页
  • 人体姿态估计
  • 2D-3D-Lifting
  • 动作质量评估
  • 基于RGBD视觉信息的异常行为识别
  • 基于RGB视频的行为识别
  • 大模型应用
  • 网络结构

    • Transformer
    • GCN
    • Graph Transformers
    • Diffusion Model
  • 深度学习
  • 论文解读
  • 后端开发
  • Git
  • 博客搭建
  • Debug
  • 面试
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 后端开发

    • cmake介绍
    • \{}统一初始化方
    • C++11新特性
    • C++标准推荐使用标准库头文件
    • C++动态内存分配和静态的区别
    • C++类函数后面加const的作用
      • C++类和结构区别
      • C++内存区域
      • nullptr与NULL
      • priority_queue使用
      • string , cstring , string h 的区别
      • using与typedef定义别名区别
      • vector中[]和at访问区别
      • 常量指针和指针常量
      • 空类大小及相关介绍
      • 容器emplace与push操作
      • 数据结构操作——时间复杂度
      • 智能指针(Smart Pointers)
      • 最大堆的实现
    • Git

    • 博客搭建

    • Debug

    • python开发

    • 技术
    • 后端开发
    xzhouzeng
    2023-03-20
    目录

    C++类函数后面加const的作用

    # c++类函数后面加const的作用

    Created: March 19, 2024 11:46 AM

    在C++中,在类成员函数的声明和定义末尾添加**const关键字有特殊的含义。这表明该成员函数是const-qualified,意味着它不会修改对象的任何成员变量(除了那些用mutable**关键字标记的变量)。这种函数可以被称为“常量成员函数”。

    # 常量成员函数的特点和作用:

    1. 保证不修改对象状态:通过将成员函数声明为**const,你向编译器和其他程序员保证,调用该函数不会改变对象的状态。这包括不修改成员变量和不调用任何非const**成员函数。
    2. 允许在常量对象上调用:只有**const成员函数可以在常量对象上调用。这意味着如果你有一个const对象(或const引用/指针),你只能调用它的const**成员函数。

    # 示例:

    cppCopy code
    class MyClass {
    public:
        int value;
    
        MyClass(int v) : value(v) {}
    
        int getValue() const { // 常量成员函数
            return value;
        }
    
        void setValue(int v) { // 非常量成员函数
            value = v;
        }
    };
    
    int main() {
        MyClass obj(10);
    
        const MyClass constObj(20);
        std::cout << constObj.getValue() << std::endl; // 合法,因为getValue()是const成员函数
    
        // constObj.setValue(30); // 非法,因为setValue()是非const成员函数
    }
    
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25

    在上述示例中,getValue()函数后面加了const,表示这个函数不会修改任何成员变量。因此,即使对于**const对象constObj,也可以调用getValue()函数。相反,setValue()函数尝试修改成员变量,所以它不是const成员函数,不能在const**对象上调用。

    # 为什么使用常量成员函数?

    • 增强代码安全性:防止函数无意中修改对象状态。
    • 提高代码可读性和维护性:**const**成员函数清楚地表明了函数的意图,即不改变对象状态。
    • 支持常量和非常量代码重用:允许同一个函数在常量和非常量对象上被重用,增加了代码的灵活性。

    总之,合理使用**const**成员函数是C++编程中的一种良好实践,有助于编写更安全、更清晰的代码。

    编辑 (opens new window)
    C++动态内存分配和静态的区别
    C++类和结构区别

    ← C++动态内存分配和静态的区别 C++类和结构区别→

    最近更新
    01
    VideoLLMs
    03-20
    02
    Video2Script
    12-07
    03
    多模态
    11-09
    更多文章>
    Theme by Vdoing | Copyright © 2022-2024 xzhouzeng | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式