c++ const

Const:核心思想就是常量可以给被人赋值,可以去修改别人,但是别人不能修改常量

cosnt所能修饰的范围:

<1>修饰变量,来表示变量在初始化后不可改变

 

 

<2>修饰参数,表示参数在函数中不能进行改变,形参和实参的类型和限定要相同

c++ const_第1张图片

 

<3>修饰成员函数

1.表明这个函数不会对这个类对象的数据成员(准确地说是非静态数据成员作任何改变)

2.有 const 修饰的成员函数(指 const 放在函数参数表的后面,而不是在函数前面或者参数表内),只能读取数据成员,不能改变数据成员;没有 const 修饰的成员函数,对数据成员则是可读可写的)

3.有const和没有cosnt修饰的成员函数可以形成重载

4、用常量修饰的对象只能访问const修饰的成员函数

5.cosnt写实的对象可以访问并修改static成员

6.长对象可以访问普通成员,但是不能修改普通成员变量

 

 

 

c++ const_第2张图片

 

<4>修饰成员函数返回值,表示返回值不可变

 

c++ const_第3张图片

定义的不可修改的返回值

c++ const_第4张图片

 

 

<5>const不修饰构造函数

 

<6>cosnt和static不能同时修饰成员函数

C++编译器在实现const的成员函数的额时候为了确保该函数不能修改类的实例的状态,会在函数中添加一个隐式的参数 cosnt this*。但是放一个成员为static的时候,该函数就没有this指针,也就是说此时const用法和static是冲突的。

 

<6>几种const修饰代表的含义

Const int *p   ==  int const *p    const int* p    ==   const int const *p       //这里是修饰的p的值,在int前面,修饰指针所指向的值是不可改的

 

c++ const_第5张图片

 

 

Int*  Cosnt p                //这里是修饰的指针,表示int*类型的指针是不可改变的,并且要在声明的时候初始化

 

c++ const_第6张图片

 

Const int*  const *p        //这里修饰的是指 和指针,两者都不可以改变

 

 

c++ const_第7张图片

 

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