C++的作用域与链接
2015-10-31 15:36
253 查看
C++变量的作用域:
在函数原型中使用的名称只在包含参数列表的括号内可用,在类中声明的成员的作用域为整个类。在名称空间中的声明的变量的作用域为整个名称空间。
volatile关键字:
即使程序代码没有对内存单元进行修改,其值也可能发生变化,该关键字的作用是为了改善编译器的优化能力,例如编译器发现,程序在几条语句中两次使用了某个变量的值,那么它会把该变量的值缓存到寄存器中,volatile告诉编译器不要这么做
mutable关键字:
当结构或者类中的某个成员声明为mutable时,当某个值为该结构的const对象时,我们仍能修改该mutable修饰的成员
const关键字:
在文件中定义外部变量const时,其默认的链接性为内部,这样可以在头文件中定义const对象。如果想要把其声明为外部链接性的话,可以定义为extern const,同时在其他文件中要用该文件的话,必须加上extern关键字。
只能使用常量表达式来初始化静态变量,未显式初始化的静态变量则其内存空间全为零。
名称空间:
名称空间可以是全局的,也可以位于另外一个名名称空间中,但不能位于代码块中。所以名称空间中的名称都是外部连接的,名称空间具有开放性。
C++提供两种机制来简化对名称空间的使用,using声明和using指令。using声明就像声明了这个语句一样,如果已经有了一个变量,则不能再导入了,using声明要比using指令安全。
类的内联:
定义位于类声明中的函数都将自动称为内联函数,也可以在类声明之定义成员函数。内联函数的特殊规则则要求在每个使用他们的文件中都对其进行定义,确保内联定义对多文件程序中所有问价都是可用的,最简单的方法是:将内联函数定义放在定义类的头文件中。
在函数原型中使用的名称只在包含参数列表的括号内可用,在类中声明的成员的作用域为整个类。在名称空间中的声明的变量的作用域为整个名称空间。
volatile关键字:
即使程序代码没有对内存单元进行修改,其值也可能发生变化,该关键字的作用是为了改善编译器的优化能力,例如编译器发现,程序在几条语句中两次使用了某个变量的值,那么它会把该变量的值缓存到寄存器中,volatile告诉编译器不要这么做
mutable关键字:
当结构或者类中的某个成员声明为mutable时,当某个值为该结构的const对象时,我们仍能修改该mutable修饰的成员
const关键字:
在文件中定义外部变量const时,其默认的链接性为内部,这样可以在头文件中定义const对象。如果想要把其声明为外部链接性的话,可以定义为extern const,同时在其他文件中要用该文件的话,必须加上extern关键字。
只能使用常量表达式来初始化静态变量,未显式初始化的静态变量则其内存空间全为零。
名称空间:
名称空间可以是全局的,也可以位于另外一个名名称空间中,但不能位于代码块中。所以名称空间中的名称都是外部连接的,名称空间具有开放性。
C++提供两种机制来简化对名称空间的使用,using声明和using指令。using声明就像声明了这个语句一样,如果已经有了一个变量,则不能再导入了,using声明要比using指令安全。
类的内联:
定义位于类声明中的函数都将自动称为内联函数,也可以在类声明之定义成员函数。内联函数的特殊规则则要求在每个使用他们的文件中都对其进行定义,确保内联定义对多文件程序中所有问价都是可用的,最简单的方法是:将内联函数定义放在定义类的头文件中。
相关文章推荐
- [C++] right value reference
- c++11 数值类型和字符串的相互转换
- 乘积最大<DP><C++>
- c++11 处理时间和日期
- matiab调用C语言程序
- 将数组"student a am i"的内容改为"i am a student"
- 安装 gcc-c++ 时报错和原有 gcc 版本冲突
- 做一个动态链接库
- 使用sLDA
- C语言入门----输出语句
- HDU1004(C++map的用法)
- 解析a++ 与 ++a 的区别
- C++调用python
- C++调用python
- 逻辑思维推理程序
- IAR 下C中嵌入汇编
- 【面试常考】C语言:输入:"student a am i",输出"i am a student,不能使用库函数
- c++取随机值
- C语言中||\这个符号\是连接符,不是换行,
- 看看最新的考试 c语言 noip模拟 纯llq原创作品