const解析

130 阅读2分钟

const修饰变量

const修饰变量,使得变量具有常量属性,即被const修饰的变量一旦定义将不允许再次修改其值,这也就要求使用const修饰变量时,需要对变量进行初始化

const修饰函数形参

只允许函数内部对形参进行读操作,而不能写操作

const修饰函数返回值

即函数返回值为常量,不允许再度修改,那么接收返回值的变量也需要具有const属性

const与指针

const离谁近修饰谁,修饰时需要判断其修饰的完整类型

  1. const int* const p1 = &x;//指针指向不可改,指向内容不可改

  2. const int* p2 = &x;//指针指向可改,指向内容不可改

  3. int const* p3 = &x;//指针指向可改,指向内容不可改

  4. int* const p4 = &x;//指针指向不可改,指向内容可改

const修饰类成员函数

被const修饰得类成员函数,称为常方法。常方法只能调用常方法,且不可修改除static成员之外的变量,但非const修饰的成员函数可以调用常方法

const修饰类成员变量

被const修饰的类成员变量,需要在构造函数的初始化列表中初始化,之后不可再次修改

const和#define的区别

const修饰的变量存储于常量区,只会在第一次分配一次空间,永久使用。如果使用#define定义的宏,则每次都会分配内存。相较之下,const更省空间

const和extern

const修饰的变量只能在该程序的本文件中使用,不能在该程序的其他文件中使用。 要想const定义的对象变量能被其他文件调用,定义时必须使用extern修饰;

const对象

const对象只能调用const方法