C/C++ const用法详解
2020-05-09 本文已影响0人
零岁的我
const变量,又称为常量
1. 创建常量
const type name = value;
type const name = value;
以上两种创建方式等价,但是通常采用第一种方式。
2. 常量的初始化
因为常量一旦创建后就不能改变,因此常量必须在定义的同时赋值,后面的任何赋值行为都将引发错误。
3. const和指针
const和指针变量一起使用,可以限制指针变量本身,也可以限制指针指向的数据。
const和指针一起使用会有几种不同的顺序:
- const int* p1 ; //p1所指向的数据是只读的,但是p1可以可变自己的指向
- int const* p2 ; //p2所指向的数据是只读的,p2可以改变自己的指向
- int * const p3; //p3本身的值不能被修改
- const int* const p4; //指针本身和它指向的数据都是只读的;
- int const * const p5; //同上
const与指针不同结合顺序含义的记忆方法:
const 离变量名近就是用来修饰指针变量的,离变量名远就是用来修饰指针指向的数据,如果近的和远的都有,那么就同时修饰指针变量以及它指向的数据。
4. const和函数形参
const通常用在函数形参中,例如函数形参是一个指针,用const限制可以防止在函数内部修改指针指向的数据。
下面是部分函数的原型:
size_t strlen ( const char * str );
int strcmp ( const char * str1, const char * str2 );
char * strcat ( char * destination, const char * source );
char * strcpy ( char * destination, const char * source );
int system (const char* command);
int puts ( const char * str );
int printf ( const char * format, ... );
5. const和非const转换
const类型不能赋值给非const类型,非const转换为const类型是允许的。
6. C++ const成员变量和成员函数
- const成员变量的初始化只能通过构造函数的初始化列表,没有其他方法;
- const成员函数(常成员函数)可以使用类中的所有成员变量,但是不能修改它们的值。
- 常成员函数需要在声明和定义的时候在函数头部加上const关键字。
例如:
int getAge() const;
int getAge() const{
return age;
}
- 不同位置的const
1)开头的const用来修饰函数的返回值,表示返回的是const类型,也就是不能被修改,例如:const char* getname();
2)函数头部结尾加上const表示常成员函数,这种函数只能读取成员变量,而不能修改成员变量的值。 - const修饰的对象称为常对象.常对象只能访问被const修饰的成员。