zoukankan      html  css  js  c++  java
  • C++:const限定符

    初始化:const对象一经创建其值不能再改变,所以const对象必须初始化

    范围:默认const对象仅在文件内有效。例外:extern const

    常量引用:不能通过该引用修改所绑定的对象。 

    int i=5;
    int &r1=i;
    const int &r2=i;
    r1=1;    //正确,可以通过引用修改所绑定对象的值    
    r2=0;    //错误,不能通过常量引用修改所绑定对象的值

    指针和const:

    • *const 常量指针:把指针本身定义为常量
      • 不变的是指针本身的值,而非所指向常量的值。
    • const* 指向常量的指针:和常量引用一样,不能通过该指针改变对象的值。
    • const *const 指向常量对象的常量指针

    顶层和底层const:

    • 顶层const:本身是常量,不能改变本身的值
    • 底层const:指向常量,可以改变自身的值
      •   不能用指向常量的指针去给一个指针赋值(这相当于用常数给指针赋值,不合法)

    常量表达式:值不会改变,且在编译过程就能得到计算结果的表达式。

    • 字面值
      • 算术类型
      • 引用
      • 指针
    • 用常量表达式初始化的const对象
    int size=27;    //数据类型只是普通int而非const int,值可能会改变,所以不是
    const int sz=get_size();    //具体值要到运行时才能获取,所以不是

    constexpr :如果你认定变量是一个常量表达式,就把它声明成constexpr类型 。constexpr int *p    //这是一个*const类型(C++11)

  • 相关阅读:
    【CF1029A】Many Equal Substrings(模拟)
    【CF1028C】Rectangles(线段树)
    【CF1028B】Unnatural Conditions(构造)
    【CF1028A】Find Square(签到)
    【CF1025C】Plasticine zebra(模拟)
    【CF1025A】Doggo Recoloring(签到)
    167.数据传送指令
    166.寻址方式
    165.基础
    164.多媒体操作系统
  • 原文地址:https://www.cnblogs.com/tomatokely/p/8858133.html
Copyright © 2011-2022 走看看