c++ const关键字有什么用_c++常量限定符作用解析

夏强大大_9740

夏强大大_9740

2025-10-29

1012人浏览

原创

const用于声明不可修改的变量、指针、函数参数及成员函数,提升安全性与可读性;1. const变量值不可变,具类型和作用域;2. 指向常量的指针不可改指向内容,常量指针不可改地址,二者结合则均不可改;3. const参数防止实参被修改,适用于引用或指针;4. const成员函数不修改成员变量,可被const对象调用;5. const返回值防止被修改,如赋值操作符重载。合理使用const增强代码健壮性。

c++ const关键字有什么用_c++常量限定符作用解析

在C++中,const关键字是一个非常重要的常量限定符,它用于声明不可修改的变量、函数参数、成员函数和指针等。使用const可以提高程序的安全性和可读性,同时帮助编译器进行优化。

1. const修饰变量:定义常量

用const修饰的变量表示其值不能被修改,相当于一个只读变量。

例如:
const int size = 10;
size = 20; // 编译错误:不能修改const变量

这种写法比宏定义(#define)更安全,因为const变量有类型检查和作用域控制。

2. const与指针:指向常量或常量指针

const在指针中的使用较为灵活,主要有以下几种情况:

  • 指向常量的指针:不能通过指针修改所指向的值
const int* ptr = &x;  // 或 int const* ptr
ptr++;        // OK:可以改变指针本身
*ptr = 5;     // 错误:不能修改指向的内容
  • 常量指针:指针本身不能被修改,但可以修改指向的内容
  • int* const ptr = &x;
    ptr++;        // 错误:不能修改指针
    *ptr = 5;     // OK:可以修改内容
  • 指向常量的常量指针:既不能修改指针,也不能修改内容
  • const int* const ptr = &x;
    ptr++;        // 错误
    *ptr = 5;     // 错误

    3. const修饰函数参数

    当函数参数为指针或引用时,使用const可以防止函数内部意外修改实参。

    例如:
    void print(const std::string& str) {
        // str不能再被修改,保护原始数据
        std::cout <p>这在传递大对象时尤其有用,既能避免拷贝开销,又能保证安全性。</p><div class="aritcle_card flexRow artxards">
    											<div class="artcardd flexRow">
    												<a class="aritcle_card_img" rel="nofollow" href="/xiazai/gongju/2823" title="C++14"><img
    														src="https://img.php.cn/upload/manual/001/431/639/6ac8b33c327c4749.png" alt="C++14" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
    												<div class="aritcle_card_info flexColumn">
    													<a rel="nofollow" href="/xiazai/gongju/2823" title="C++14" class="overflowclass">C++14</a>
    													<p class="overflowclass">C++14 对 C++11 的修正与增强版本,适合旧系统维护和较老工具链兼容。</p>
    												</div>
    												<a rel="nofollow" href="/xiazai/gongju/2823" title="C++14" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span>
    												</a>
    											</div>
    										</div><h3>4. const成员函数</h3><p>在类的成员函数后加上const,表示该函数不会修改类的成员变量。</p><font>例如:</font><pre class="brush:php;toolbar:false;">class MyClass {
        int value;
    public:
        int getValue() const {
            return value;  // 正确:不修改成员
        }
        void setValue(int v) {
            value = v;     // 非const函数才能修改
        }
    };

    只有const成员函数才能被const对象调用。

    5. const返回值

    对于某些函数,返回值也可以是const,防止返回的对象被修改。

    常见于重载赋值操作符:
    const MyClass& operator=(const MyClass& other);

    这样可以防止出现 (a=b)=c 这样的非法链式赋值。

    基本上就这些。const不只是“定义常量”这么简单,它贯穿于变量、指针、函数、类设计等多个层面,合理使用能显著提升代码质量和健壮性。理解const的语义和位置规则,是掌握C++编程的重要一步。

    C++免费学习笔记(深入):立即使用
    在学习笔记中,你将探索 C++ 的入门与实战技巧!

    相关专题

    更多
    java基础知识汇总
    java基础知识汇总

    java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

    2023.10.24

    6244

    49

    typedef和define区别
    typedef和define区别

    typedef和define区别在类型检查、作用范围、可读性、错误处理和内存占用等。本专题为大家提供typedef和define相关的文章、下载、课程内容,供大家免费下载体验。

    2023.09.26

    313

    5

    define的用法
    define的用法

    define用法:1、定义常量;2、定义函数宏:3、定义条件编译;4、定义多行宏。更多关于define的用法的内容,大家可以阅读本专题下的文章。

    2023.10.11

    619

    5

    c语言const用法
    c语言const用法

    const是关键字,可以用于声明常量、函数参数中的const修饰符、const修饰函数返回值、const修饰指针。详细介绍:1、声明常量,const关键字可用于声明常量,常量的值在程序运行期间不可修改,常量可以是基本数据类型,如整数、浮点数、字符等,也可是自定义的数据类型;2、函数参数中的const修饰符,const关键字可用于函数的参数中,表示该参数在函数内部不可修改等等。

    2023.09.20

    2338

    7

    C++ 智能指针与现代内存管理
    C++ 智能指针与现代内存管理

    深入讲解 C++ 现代内存管理的核心工具——智能指针,涵盖 unique_ptr 独占所有权语义、shared_ptr 引用计数机制与循环引用问题、weak_ptr 弱引用的应用场景、make_unique/make_shared 工厂函数的性能优势、自定义删除器的编写、RAII 资源管理思想的实践,以及从裸指针迁移到智能指针的重构策略,帮助开发者编写安全无泄漏的现代 C++ 代码。

    2026.04.23

    379

    31

    Uvicorn 报错与问题解决教程
    Uvicorn 报错与问题解决教程

    本专题汇总了Uvicorn服务器常见问题与报错解决的教程合集,涵盖启动失败、端口占用、模块导入错误、事件循环冲突及热重载失效等典型故障的排查思路。同时整理了多进程与Worker配置、SSL/HTTPS证书报错、跨域与代理配置等实战解决方案,助你快速定位并解决Uvicorn运行中的各类问题。

    2026.11.02

    0

    14

    Uvicorn使用教程
    Uvicorn使用教程

    本专题汇总了Uvicorn使用教程与启动运行指南,涵盖其作为Python ASGI服务器的定位与特点,以及命令行启动(uvicorn main:app --reload)、参数配置(host/port/workers)、程序内嵌运行与Gunicorn结合部署等核心用法。同时整理了热重载调试、日志配置与生产环境部署优化等技巧,助你快速掌握Uvicorn的运行与配置。

    2026.11.02

    0

    17

    Uvicorn安装配置教程
    Uvicorn安装配置教程

    本专题汇总了Uvicorn的安装配置教程与部署指南,涵盖通过pip安装Uvicorn、启动FastAPI/Starlette应用、开发模式热重载(--reload)及多进程工作模式配置等核心操作。同时整理了结合Gunicorn的生产部署方案、HTTPS与反向代理配置及性能调优技巧,助你快速完成Uvicorn服务的安装与上线部署。

    2026.11.02

    0

    17

    Vite 项目如何打包和部署
    Vite 项目如何打包和部署

    Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

    2026.10.28

    100

    16

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    C++ Core Guidelines
    C++ Core Guidelines

    共0课时 | 0人学习

    C++ Reference
    C++ Reference

    共0课时 | 0人学习

    C++ 官方标准说明
    C++ 官方标准说明

    共0课时 | 0人学习