【浙江大学】【面向对象程序设计】练习题2 namespace部分题解

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 修饰。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值