C++ const 总结

1.const 在被创建的时候一定要初始化

2.const 修饰变量,表示这个变量的指不能被改变

const int  x = 15; //x不能被改变

3.默认状态下,const仅在文件内有效

4.const和引用

  4.1:不能用一个非常量引用指向常量对象

   const int ci = 123;//正确

   const int &bi = ci;//正确

   ri = 23 ;//错误

   int &ai = ci//错误,不能用一个非常量应用指向常量对象

  4.2:初始化引用常量 :引用类型初始化必须要和所应用对象的类型一致,但是有二个例外,初始化常量引用时,可以和所应用的对象类型不一样只要所引用的对象类型能转换成引用的对象类型就行。

      int  i=123;//

      const int &r1 = i;//

      const int &r2 = 42;//

      const int &r3 = r1*2;// 可以,r1是const引用

       int &r4 = r1*2;//错误,r4不是const 引用

  4.3 对const 的引用可能是一个非const变量

   int i = 1; 

   cosnt int &r1 = i;//可以

   i = 0;//i的指变为0

   r1 = 0;//错误

5.const和指针

   5.1 不用用非常量指针指向常量指针

   5.2 指针的类型要和所指对象一致,但是有例外,可以用const 指针指向非const 对象,非const对象如果要改变值只能通过其他途径。

   5.3 const指针必须初始化

    int x = 0;

    int * const r1 = &x;//r1将一直指向x的地址

   const int  y = 123;

   const int  * const r2 = y;   

   在 指针前加const表示,这个指针将一直指向那个地址,仍然可以修改那个地址的指,但是,如果前面还有个const表示不能修改值。

6.顶层const和底层const

顶层const:该指针是个常量,底层const:指针指向的对象是常量

   int i = 100;

   int * const r1 = &i;//顶层const ,不能改变r1的指(指针的值是地址)

   const int x = i;//顶层const, x的值不能改变

   const int * r2 = &ci;//底层const ,

 

  

 

 

 

 

 

 

 

你可能感兴趣的:(C++)