C++精进之路2:const限定符及其用法

用处

定义一种值无法改变的变量,供其他程序使用。

它是一个修饰类型的关键字,需要初始化,表示变量在初始化后不再可以改变。

const与宏定义的区别

1、发生的时间不一样,宏定义发生在预处理,const发生在编译时。

2、是否进行了类型转换,宏定义只进行了字符替换,本质上只是别名,没有进行类型检查,编译时可能会出现不可预期的错误;const关键字有类型检查,在编译阶段就能检查出const的错误。

在C++中,推荐多使用const、emun替代掉宏定义

const修饰指针变量

在*前,表示指针可以改变指向,但是不能改变指向的内容的值:

char  const * str = "hello";(等同于 const char * str)

这种指针称为常量指针。

在*后面,不能改变指向,但是可以改变指针所指变量的值:

int  *  const  p = &a;

*p = 5;

这种称为指针常量;

双重限定下,为常常量:

const int * const p = &number;  //指向与值都不可改变

可以看到,const是修饰离右边最近的一个变量,将其先定为常量。

const在函数中的使用

1、修饰函数

void fun(args) const{}

常量函数,在函数内部无法对对象的数据成员进行修改,并且函数内不可调用非const函数。这种用法是为了防止修改数据成员,常在访问成员变量值的方法使用;

2、修饰函数的参数

void fun(const args){}

防止传入的参数在函数中被修改,一般与引用和指针一起使用,表示引用对象但是不允许修改对象的值;

3、修饰函数的的返回指针或者引用

return  const obj;

目的是为了防止返回的引用实体或者指针被修改,使得函数的表达式不能作为左值使用,常用于运算符重载。

你可能感兴趣的:(C++学习,c++,指针)