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

C++快速入门 (三) 常量, 字面值常量 及作用域

2012-12-26 11:02 232 查看

一 常量

(1). 声明常量

C++ 使用关键字 coust 声明常量

const 变量类型 变量名 = 变量值

如: const int x = 10;

(2). 声明和使用全局常量

使用关键字 extern const 来声明和使用全局常量

classA.cpp
extern const int x = 101;
-----------------
main.cpp
[align=left]extern const int te;[/align]
[align=left]int _tmain(int argc, _TCHAR* argv[])[/align]
[align=left]{[/align]
[align=left] cout << te << endl; // return 101[/align]
[align=left]}[/align]

(3). 编译时才检查 const

C++是静态语言,既 使用前需要进行编译,只有编译通过了才能生成可执行的程序,而 const机制 其实也只是在编译时进行检查,如果发现代码中有对 声明为 const 的类型进行操作时,就会报错. 但编译并生成汇编代码后 const 和 非const 声明的类型 存储方式是一样,也可以被修改.

二 字面值常量

(1). 并不陌生的字面值常量

顾名思义字面值常量就是书写时就已经确定其值并只能以其值称呼的常量,如 int i = 10 中 的 10,这里只需简单了解下,后边还会讨论

三 作用域

(1). 什么是作用域

作用域是相对于某个对象来说的,既 对象可以访问的作用范围 就叫做作用域

(2). 判断对象的作用域

通常情况下作用域是指 对象所处花括号内的范围, 出花括号时(出作用域) ,在该作用域中使用一般方式创建的变量或常量将被清除,如

[align=left] if (true)[/align]
[align=left] {[/align]
[align=left] int x = 10;[/align]
[align=left] }[/align]
[align=left] const << x << endl; //error 变量x已经因为出作用域而被清除[/align]

(3). 嵌套作用域中存在同名变量时

在 C++中 一个作用域和在其内部的另一个作用域同时声明了同名变量时,内部作用域将使用该域声明的变量,而隐藏其上层作用域的同名变量。(Java中这种情况是不允许的,编译时会报错)

[align=left] int i = 100, sum = 0;[/align]
[align=left] for (int i = 0; i != 10; i++)[/align]
[align=left] {[/align]
[align=left] cout << i << endl; // 外部作用域声明的 i =100 已经被隐藏[/align]
[align=left] sum += i;[/align]
[align=left] }[/align]
[align=left] cout << i << " | " << sum << endl; // return: 100 , 45[/align]

(4). 范围解析运算符::

范围解析运算符 用于引用 某个类型所包含的其他类型,既

类型 :: 内部类型

当 范围解析运算符前部类型为空时,会指向全局

[align=left]#include <iostream>[/align]
[align=left]using namespace std;[/align]

[align=left]int ioz = 10086;[/align]
[align=left]int _tmain (int argc, _TCHAR* argv [])[/align]
[align=left]{[/align]
[align=left] {[/align]
[align=left] int ioz = 100;[/align]

[align=left] cout << ioz << endl; //100[/align]
[align=left] cout << ::ioz << endl; //10086[/align]

[align=left] }[/align]
[align=left]}[/align]

上例中定义了一个未命名作用域, 其作用和一般作用域相同,在一些代码库中会碰到这种写法,

(5). 文件作用域

在文件的最上层作用域 定义类型时使用 static 关键字声明,该类型 的作用域为文件作用域,既 只有当前文件内可以访问。

-

<原创文章 转载请注明出处 http://blog.csdn.net/meiwm 谢谢>

作者:meiwm

出处:http://blog.csdn.net/meiwm
本文为原创,本文版权归作者所有。欢迎转载,但请务必保留此段声明,且在文章页面明显位置给出原文连接,谢谢合作。

-
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: