您的位置:首页 > 编程语言 > C语言/C++

C++学习笔记4——const

2015-10-10 19:50 288 查看
1,const
效果


不管是在c还是c++中,用const修饰变量后,对变量值的更改都会导致编译器报错。

visual studio报错信息:error C2166: 左值指定 const 对象

gcc和g++报错信息: error: assignment of read-only variable ‘a’

所以从效果上说,const修饰的变量确实变成了read-only变量——常量。

由于const变量的值不能被修改,所以其必须在初始化的时候被赋值。(否则g++编译会报错)

2,const与extern

在C语言中,不管是const变量还是非const变量,默认都是extern的,即在别的文件中可用的,只要你在别的文件中用extern声明即可。所以在C语言中定义全局变量从来不加extern,只在声明的时候加。

friend.c:1:21: warning: ‘dMyAge’ initialized and declared ‘extern’ [enabled by default]
extern const double dMyAge = 30;
^

在C++中,非const变量默认是extern的,但是const变量却不是。所以在定义要用于其他文件的const全局变量时,必须显式地加上extern,在使用该变量的文件中声明该全局变量时当然也要加上extern限定。

语言非constconst
C默认extern默认extern
C++默认extern默认不是extern
3,const全局变量与static全局变量的作用域区别

static全局变量永远都没有办法在其他文件中使用,哪怕是使用extern。

const全局变量只是默认不能在其他文件中使用,使用extern修饰之后就能在其他文件中使
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: