• const的限定


        const对象一旦创建后,其值就不可以改变,所以const对象必须初始化。与非const的类型比较,主要区别在于const类型对象执行但是不改变其操作内容。

        在默认状态下,const只在文件内有效。在默认状况下,const定义的对象仅限定在文件类起作用,当多个文件中出现了同名的const时其实等同于在不同文件中分别定义了独立的变量。于是我们只在一个文件中定义const对象,而在其他文件中仅仅声明就可以。对于const对象不管是声明还是定义都加extern关键字,这样只需要定义一次就可以了。如下:

            //在file1.h文件里面定义i

            extern const int i=3;    //将i定义为常量3

          //在file2.h中引用i时只要声明就可以,避免重定义

            extern const int i;

             int a=i;   //这样就可以使用i了

    const的引用被称为对常量的引用(reference to const),引用类型必须与其所引用的对象保持一致,但是在这里有两个例外,第一个例外是在初始化常量引用时允许用任意表达式作为初始值。允许为一个常量引用绑定非常量对象,字面值,甚至是一个表达式:

                              int i=42;

                              const int &r1=i;    //正确,此时r1与i绑定

                              const int &r2=42;  // 正确,此时绑定一个字面值42

                              const int &r3=r1*2;  //正确,r3是一个常量引用,绑定字面值84

                               int &r4=42;    //错误,非常量引用不可绑定字面值

     指向常量的指针不可以用于改变它所指的对象的值。要想存放指向常量的地址,必须使用指向常量的指针。

                              const int i=9;

                              int *p1=&i   //错误,不可以用一个普通指针指向一个常量

                              const int*p2=&i;  //正确,用常量指针指向常量

                               *p2=5;   //错误,常量指针不可以改变所指向位置的值

    常量指针(const pointer)必须初始化,一旦初始化完成,它指向的位置(存放的地址)就不在改变。

                               int i=4;

                               int j=5;

                               int *const p=&i;   //p将一直指向i,p是一个常量指针

                               const int*p1=&j;  //p1是一个指向常量的指针,注意const的位置

               

                                                                   

  • 相关阅读:
    七牛云上传图片
    找到当前字符串中最后一个/并获取之后的字符串
    jquery正则表达式验证:验证身份证号码
    apply()与call()的区别
    js 判断字符串是否包含某字符串,String对象中查找子字符,indexOf
    改变父元素的透明度,不影响子元素的透明度—css
    c实现生产者消费者问题。 windows下。
    python基础练习 dict切片
    html+css test1
    codewars[7]-python Friend or Foe?
  • 原文地址:https://www.cnblogs.com/td15980891505/p/5136638.html
Copyright © 2020-2023  润新知