第十八章 18.2.2节练习

来源:互联网 发布:火影忍者安卓数据 编辑:程序博客网 时间:2024/06/06 09:44

练习18.15

说明using指示与using声明的区别。

解答:

using声明语句一次只引入命名空间的一个成员。

using指示语句一次性注入某个空间的所有名字。


练习18.16

假定在下面的代码中标记为“位置1”的地方是对于命名空间Exercise中所有成员的using声明,请解释代码的含义。

如果这些using声明出现在“位置2”又会怎样呢?

将using声明变为using指示,重新回答之前的问题。

namespace Exercise{  int ivar = 0;  double dvar = 0;  const int limit = 1000;}int ivar = 0;//位置1void manip(){  // 位置2  double dvar = 3.1416;  int iobj = limit + 1;  ++ivar;  ++::ivar;}

解答:

(1)

在位置1处使用using声明,会让Exercise::ivar产生多次声明,也就是和未在任何命名空间内的ivar的声明冲突。

(2)

在位置2处使用using指示,会让函数中的ivar(不是::ivar)产生二义性。


练习18.17

实际编写代码检验你对上一题的回答是否正确。

解答:

#include <iostream>#define position1 1#define position2 0namespace Exercise{int ivar = 0;double dvar = 0;const int limit = 1000;}int ivar = 0;#if position1using Exercise::ivar;using Exercise::dvar;using Exercise::limit;#endifvoid main(){#if position2using namespace Exercise;#endifdouble dvar = 3.1416;int iobj = limit + 1;++ivar;++::ivar;}




0 0
原创粉丝点击