• C++ const限定符


    • 基本特性
    1. const对象一旦创建后其值就不能被修改,故而const对象必须进行初始化
    2. 可以用一个非const对象初始化一个const对象,也可以用一个const对象赋值给一个非const对象
    • 默认状态下,const对象仅在文件内有效
    1. 当多个文件内出现了同名的const变量时,等同于在不同文件中定义了独立的变量
    2. 要在多个文件之间共享const对象,在变量的定义之前加上extern关键字
    • &类型与const
        1、&(引用)类型与*(指针)类型不同,引用类型的声明、定义和初始化是一起的,初始化之后将不能再引用其他的变量
                而指针类型的声明、定义、初始化以及之后的赋值都是没有限制的。
    1. int a =1;
    2. int b =2;
    3. int&c = a;
    4. int*p;
    5. p =&a;
        2、与const的搭配
    1. int a =1;
    2. int b =2;
    3. /**< 因为引用在被初始化之后就不能在引用其它变量,所以没有int & const c = a这种写法 */
    4. constint&c = a;
    5. /**
    6. * 不能给c赋值,对a无要求(a可以是const或者非const类型,a也可以重新赋值)
    7. * 不能将c赋值给非const类型
    8. */
    9. constint*p1 =&a;//等同于int const *p1 = &a;
    10. /**
    11. * 底层const
    12. * 不能通过p1修改a的值,对a无要求
    13. * 不能将p1赋值给非const类型
    14. * p1可以指向其他变量
    15. */
    16. int*const p2 =&a;
    17. /**
    18. * 顶层const
    19. * 可以通过p2修改a的值
    20. * p2不能指向其他变量
    21. */
    22. const int * const p3 = &a;
    如果const位于*的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;
    如果const位于
    *的右侧,const就是修饰指针本身,即指针本身是常量.





  • 相关阅读:
    树莓派安装realvnc_server
    python中#!含义
    树莓派无显示屏连接wifi
    转载_fread函数详解
    树莓派3b+更改静态IP
    linux命令语法格式
    python-Arduino串口传输数据到电脑并保存至excel表格
    mysql的sql_mode合理设置
    Mysql 配置参数性能调优
    Kubernetes 部署 gitlab
  • 原文地址:https://www.cnblogs.com/fengkang1008/p/4652244.html
Copyright © 2020-2023  润新知