C/C++ const用法详解


const变量,又称为常量

1. 创建常量

const type name = value;
type const name = value;

以上两种创建方式等价,但是通常采用第一种方式。

2. 常量的初始化

因为常量一旦创建后就不能改变,因此常量必须在定义的同时赋值,后面的任何赋值行为都将引发错误。

3. const和指针

const和指针变量一起使用,可以限制指针变量本身,也可以限制指针指向的数据。
const和指针一起使用会有几种不同的顺序:

  1. const int* p1 ; //p1所指向的数据是只读的,但是p1可以可变自己的指向
  1. int const* p2 ; //p2所指向的数据是只读的,p2可以改变自己的指向
  1. int * const p3; //p3本身的值不能被修改
  1. const int* const p4; //指针本身和它指向的数据都是只读的;
  1. 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修饰的成员。

你可能感兴趣的:(C/C++ const用法详解)