zoukankan      html  css  js  c++  java
  • const限定符用法汇总

    const限定符限定变量的类型是一个常量,对象一旦创建后其值就无法改变,所以const对象必须初始化。

    初始化  

    const int i = get_size();     //运行时初始化
    const int j = 42;                //编译时初始化
    
    int k = 40;
    const int ck = k;                //k的值 被拷贝给了ck
    

    const对象的作用域 

    默认情况下,const对象仅在文件内有效.

    如果要在多个文件中共享const对象,必须在变量的定义之前添加extern关键字。 

    //file_1.cc定义并初始化了一个常量,该常量能被其他文件访问
    extern const int bufsize = fcn();  //这里必须加上extern,别的文件才可以用
    
    //file_1.c 头文件
    extern const int bufsize; //与file_1.cc中定义的bufsize是同一个
    

    const的引用  

     因为引用所代表的就是另外一个对象的,别名而已,所以考虑引用所对应的对象是否被改变即可!!const对象也不是不能改变,下面会有提到!

    1 const int ci = 1024;
    2 const int &r1 = ci;    // 正确:引用及其对应的对象都是常量
    3 r1 = 42;                   // 错误:r1 是对常量的引用
    4 int &r2 = ci;             // 错误:试图让一个非常量引用指向一个常量对象
    5                                //试想,c1的值不可改变,但r2的值可改变,那么改变r2就是改变c1,显然不对 
    6 int i = 125;
    7 const int & r3 = i;    //允许将const int & 绑定到一个普通的int对象上    
    View Code

    初始化和对const的引用

    1 int i = 42;
    2 const int &r1 = i;     //允许将const int & 绑定到一个普通int对象上
    3 const int &r2 = 42;  //正确:r1是一个常量引用
    4 const int &r3 = r1 * 2;    //正确:r3是一个常量引用
    5 int &r4 = r1 * 2;       //错误:r4是一个普通的非常量引用    
    View Code

     对于两种情况,见下面,编译器会报错!

    int i = 42;
    const int & r1 = i; //正确,但改变i的值,r1也会跟着改变
    const int ci = 1024;

    int &i1 = i;
    i1 = 54;//正确
    r1 = 54;//错误
    int &r2 = ci*2; // 错误 VS 2015中提示:非常量引用的初始值必须为左值 int &r3 = r1; //错误 VS2015 提示:"int &" 类型的引用绑定到 "const int" 类型的初始值设定项时,限定符被丢弃
  • 相关阅读:
    【贪心 堆】luoguP2672 推销员
    【贪心 思维题】[USACO13MAR]扑克牌型Poker Hands
    「整理」[图论]最短路系列
    收集到的小玩意儿
    初遇构造函数
    在2440开发板液晶上显示两行字
    error: converting to execution character set: Invalid or incomplete multibyte or wide character
    宽字节
    宽字符wchar_t和窄字符char区别和相互转换
    linux获取文件大小的函数
  • 原文地址:https://www.cnblogs.com/zhehan54/p/5223790.html
Copyright © 2011-2022 走看看