• C++ const关键字



    1.const 限定符

      const关键字的主要作用主要在于限定一个变量的值不被改变。

      如:用一个变量来表示缓冲区的大小。

    const int bufSize = 1024;
    
    • 1

    默认情况下,const对象仅在文件内有效,如果只在一个文件中定义const,需要在其它的文件中对其声明并使用它。其解决方法就是:对于const变量不管声明还是定义都添加 extern关键字,这样就只需要定义一次就够了。

    2.const 的引用

      可以把引用绑定到 const 对象上,就像绑定到其他对象上一样,我们称之为对常量的引用,如:

    int i = 10;
    const int &r1 = i;
    const int &r2 = 42;
    
    • 1
    • 2
    • 3
    指针和 const

      与引用一样,也可以令指针指向常量或非常量,如:

    int i = 10;
    const int *ptr = &i;s
    
    • 1
    • 2

      和常量引用一样,指向常量的s指针也没有规定其所指的对象必须是一个常量。

      指针是对象,引用则不是,因此和其它对象类型一样,允许将指针本身定义为常量,常量指针必须初始化,一旦初始化,则它的值(这指的是存放指针的地址)就不能改变了。将 * 放在const关键字之前用以说明指针是一个常量。

    示例:

    int a = 10;
    int *const ptr1 = &a;//从右到左进行阅读,离ptr1最近的符号是const,这就意味着ptr1本身是一个常量对象,紧接着是*号,所以ptr1是一个常量指针。
    
    • 1
    • 2
    顶层 const 和底层 const

      顶层const指的是指针变量本身是一个常量,底层const指的是指针所指的对象是一个常量。

    constexpr 和常量表达式

    &emsp 常量表达式是指值不会变并且在编译过程就能得到计算结果的表达式。

    constexpr 变量

    C++11规定,允许将变量声明为 constexpr类型以便由编译器来验证变量的值是否是一个常量表达式。声明为constexpr的变量一定是一个常量,而且必须使用常量表达式初始化,如:

    cosntexpr int a = 20;
    constexpr int b = a + 1;
    
    • 1
    • 2

      普通函数不能作为 constexpr 变量的初始值,但新标准允许定义一种特殊的 constexpr函数,这种函数应该足够简单以使用。

      指针和引用都能够定义为constexpr,但它们的初始值却受到严格限制,一个constexpr指针的初始值必须为nullptr或0或者存储在某个固定地址中的对象,允许函数定义一类有效范围超出函数本身的变量,这类变量和定义在函数体之外的变量一样有固定地址。constexpr引用能够绑定这样的对象,const指针也能指向这样的变量。

    NOTE:在constexpr声明中如果定义了一个指针,限定符 constexpr仅对指针有效,与指针所指的对象无关。

  • 相关阅读:
    挑战100天 AI In LeetCode Day02(2)
    求臻医学张怡然博士,肿瘤基因检测“解码之旅”的践行者
    SpringCloud基础6——分布式事务,Seata
    java Spring Boot2.7写一个接口 提供图片预览 前端可以直接用接口地址当src为图片地址使用
    组合模式详解
    这一次,彻底梳理各种布局问题
    自托管图像共享服务Slink
    python一招完美搞定Chromedriver的自动更新
    Redis缓存篇:高频问题横扫核心知识点,面试高级工程师必备知识体系
    【Linux】进程控制
  • 原文地址:https://blog.csdn.net/CltCj/article/details/127674810