0
点赞
收藏
分享

微信扫一扫

【C++开发-0.1】有关于const关键字

九点韶留学 2022-05-05 阅读 35

1.修饰符号常量:

#define MONTHS 12;
const int Months = 12; //推荐使用

示例中常量Months被初始化后,编译器将不再允许修改该常量的值。

相比于预处理命令优点:

(1) .明确指定数据类型。

(2) .可以将定义限制在特定函数或文件中(作用域规则)

(3) .可以用于更复杂的类型,比如vector、struct

2.修饰指针:

①指针指向常量对象(无法通过指针改变对象的值)

int age = 100;
const int *p = &age;
int const *p = &age;

在以上代码中无法通过(*p)改变age的值,但可以通过age本身进行修改。

*p++;  //invalid
age++; //available

②常量指针(指针指向不允许改变,但可以改变对象的值)

int age = 3;
int weight = 62;
int* const p = &age;
std::cout<<++(*p)<<std::endl;


p = &weight; //invalid

输出为3;

3.修饰引用:

常用于函数参数传递(该函数的目的只是传递使用参数的值)

int age = 3;
int weight = 62;

int getSomeone(const int& age,const int& weight);

优点:

   ①使用const可以避免无意中修改数据(实参)。

   ②使用const能够处理const和非const实参,否则只能接受非const数据。

   ③使用const能够使函数正确生成并使用临时变量。

注:临时变量:

long age = 3;
long weight = 64;

void getSomeone(int& age,int& weight);

getSomeone(age,weight);

实例中getSomeone函数接收到两个long类型实参时,编译器将创建两个临时int变量初始化为3,62,并对临时变量内容进行修改,而实参age、weight则保持不变(现在C++已经禁止创建临时变量)

但在只使用传递的值的函数中,使用const能够生成临时变量处理类型不匹配,确保原始数据不被修改。

举报

相关推荐

0 条评论