2-3 What is the use of Namespace?
A. To encapsulate the data
B.To structure a program into logical units
C.Encapsulate the data & structure a program into logical units
D.It is used to mark the beginning of the program
答案:C
A是封装(encapsulate)数据,是类(Class)的作用。C++ 通过创建类来支持封装和数据隐藏(public、protected、private)
B是将程序构造成一个个逻辑单元,是函数function的作用。c语言程序的基本单位是函数,函数是C程序的基本组成单位,一个C语言程序中仅有一个main函数,除main函数之外可以有若干个其它的函数,每个函数实现某一特定的操作。
C将数据和将程序汇总到逻辑单元中。原本C++ 只有一个全局的namespace,不过后来程序的规模不断扩大,很多时候我们在合并来自不同程序员的程序时,就容易出现名字上的冲突。因此,namespace的出现主要是为了结局这个问题,将所需要的对象、函数、变量等包含在一个namespace中,就像放在一个文件夹中一样,将其区分开。
D显然不对
2-7 What will be the output of the following C++ code?
#include <iostream.h>
using namespace std;
namespace Box1
{
int a = 4;
}
namespace Box2
{
int a = 13;
}
int main ()
{
int a = 16;
Box1::a;
Box2::a;
cout << a;
return 0;
}
答案:16
仅仅是Box2::a,只是调用一下值,并没有将程序里的a赋值。
2-8 What will be the output of the following C++ code?
#include <iostream.h>
using namespace std;
namespace space
{
int x = 10;
}
namespace space
{
int y = 15;
}
int main(int argc, char * argv[])
{
space::x = space::y =5;
cout << space::x << space::y;
}
答案:55;
namespace可以添加,本题相当于前后将x、y放入命名空间space中,因此可以正常调用并且赋值。
但不可以是重复定义,比如如果是
namespace space
{
int x = 10;
}
namespace space
{
int x = 15;
}
则会报错(因为x重复定义了)
2-11Pick the incorrect statement for namespaces in C++.
A.Namespace declarations are always global scope
B.Keyword namespace is used at the starting of a namespace definition
C.Namespace has access specifiers like private or public
D.Namespace definitions can be nested
答案:C
在 C++ 中我们通过 namespace 来控制对名字的访问。
namespace 语法
1. namespace 中可定义常量、变量、函数、结构体、枚举、类等
2. namespace 只能在全局定义。A正确,C错误
3. namespace 支持嵌套定义。D正确
4. namespace 是开放的,可随时添加新的成员。
5. namespace 关键字可以为已有空间名字增加别名
6. 无名命名空间意味着命名空间中的符号只能在本文件中访问,相当于给符号增加了 static 修饰。