using 关键字的使用
using 关键字的使用主要分为两种类型:using declaration(using 声明)和using directive(using 命令):
using 声明:引入特定名称空间中的一个成员。
using 命令:使特定名称空间中的所有名字可见。
namespace Myspace
{
int a = ;
double b = 100.0;
const int c = ;
} int var = ;
// 位置1 int main()
{
// 位置2
double b = 200.0;
int d = c + ;
++a;
++::a; return ;
}
将using 声明和using 命令分别插入<位置1>和<位置2>,会发生什么情况呢?如下分析:
(1) 在<位置1>插入using 声明:
namespace Myspace
{
int a = ;
double b = 100.0;
const int c = ;
} int a = ;
9 // 位置1: 插入using 声明
using Myspace::a; /** error: 'a' is already declared in this scope */
using Myspace::b;
using Myspace::c; int main()
{
// 位置2
double b = 200.0; /** 局部 b */
int d = c + ; /** d = Myspace::c + 1 */
++a; /** 二义性 */
++::a; /** ++a */ return ;
}
说明:
将名称空间Myspace中所有成员的using 声明放在<位置1>,则a、b、c立即在<位置1>处变为可见,接着程序中有定义了变量a,此时,必然会发生重定义错误。main函数中的局部变量b则会屏蔽全局变量Myspace::b,因此可以编译通过。
(2) 在<位置2>插入using 声明:
namespace Myspace
{
int a = ;
double b = 100.0;
const int c = ;
} int a = ;
// 位置1 int main()
{
13 // 位置2: 插入using 声明
using Myspace::a;
using Myspace::b;
using Myspace::c; double b = 200.0; /** error: redeclaration of 'double b' */
int d = c + ; /** d = Myspace::c + 1 */
++a; /** ++Myspace::a */
++::a; /** ++a */ return ;
}
说明:
将a、b、c的using 声明移到<位置2>,此时,b相当于定义了两次,编译错误。此时的a有两个值,++a表示访问函数局部的a,也就是Myspace::a,因为Myspace::a把全局的a屏蔽掉了。而++::a意为显示访问全局变量。
(3) 在<位置1>插入using 命令:
namespace Myspace
{
int a = ;
double b = 100.0;
const int c = ;
} int a = ;
9 // 位置1: 插入using 命令
using namespace Myspace; int main()
{
// 位置2
double b = 200.0; /** 局部 b */
int d = c + ; /** Myspace::c */
++a; /** reference to 'a' is ambiguous*/
++::a; /** ++a */ return ;
}
说明:
++a由于不知调用Myspace::a还是a,因此,出现二义性,可以考虑改为++Myspace::a,而++::a意义非常明确。
(4) 在<位置2>插入using 命令:
namespace Myspace
{
int a = ;
double b = 100.0;
const int c = ;
} int a = ;
// 位置1 int main()
{
13 // 位置2: 插入using 命令
using namespace Myspace; double b = 200.0; /** 局部 b */
int d = c + ; /** Myspace::c */
++a; /** reference to 'a' is ambiguous*/
++::a; /** ++a */ return ;
}
说明:
解释同(3)。
using 关键字的使用的更多相关文章
- 作为一个新手的Oracle(DBA)学习笔记【转】
一.Oracle的使用 1).启动 *DQL:数据查询语言 *DML:数据操作语言 *DDL:数据定义语言 DCL:数据控制语言 TPL:事务处理语言 CCL:指针控制语言 1.登录 Win+R—cm ...
- JavaScript var关键字、变量的状态、异常处理、命名规范等介绍
本篇主要介绍var关键字.变量的undefined和null状态.异常处理.命名规范. 目录 1. var 关键字:介绍var关键字的使用. 2. 变量的状态:介绍变量的未定义.已定义未赋值.已定义已 ...
- java面向对象中的关键字
1,super关键字 super:父类的意思 1. super.属性名 (调用父类的属性) 2. super.方法名 (调用父类的方法) 3. super([参数列表])(调用父类的构造方法) 注意: ...
- 关于javascript中的this关键字
this是非常强大的一个关键字,但是如果你不了解它,可能很难正确的使用它. 下面我解释一下如果在事件处理中使用this. 首先我们讨论一下下面这个函数中的this关联到什么. function doS ...
- transient关键字的用法
本篇博客转自 一直在路上 Java transient关键字使用小记 1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,Java ...
- Java关键字:static
通常,当创建类时,就是在描述那个类的外观和行为.只有用new创建类的对象时,才分配数据存储空间,方法才能被调用.但往往我们会有下面两种需求: 1.我想要这样一个存储空间:不管创建多少对象,无论是不创建 ...
- Core Java 总结(关键字,特性问题)
2016-10-19 说说&和&&的区别 初级问题,但是还是加入了笔记,因为得满分不容易. &和&&都可以用作逻辑与的运算(两边是boolean类型), ...
- Net中的常见的关键字
Net中的关键字有很多,我们最常见的就有new.base.this.using.class.struct.abstract.interface.is.as等等.有很多的,在这里就介绍大家常见的,并且有 ...
- php多关键字查询
php单一关键字查询 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 tdansitional//EN" "http: ...
- Keil> 编译器特有的功能 > 关键字和运算符 > __weak
__weak 此关键字指示编译器弱导出符号. 可以将 __weak 关键字应用于函数和变量声明以及函数定义. 用法 函数和变量声明 对于声明,此存储类指定一个 extern 对象声明,即使不存在,也不 ...
随机推荐
- mysql增量备份(1/2)
转自:http://www.centos.bz/2012/11/mysql-incremental-backup/ 小量的数据库我们可以每天进行完整备份,因为这也用不了多少时间,但当数据库很大时,我们 ...
- REDIS 内存满时删除策略
REDIS 内存满时删除策略
- CentOS 7上安装Zabbix(高速安装监控工具Zabbix)
前提要求(optional) 安装Zabbix监控工具前,先安装必要的执行工具包 yum install gcc gcc-c++ make openssl-devel curl wget net-sn ...
- ohasd failed to start: Inappropriate ioctl for device
今天同事在安装GI的时候出现故障.让我帮忙看一下. 以下记录例如以下: 问题现象: 在安装gi的时候运行root.sh报例如以下错误: Finished running generic part of ...
- android-seekbar的thumb图片不居中显示的处理办法
seekbar更换图片后,发现thumb的图片不会居中(竖直方向)显示了,代码如下: <SeekBar android:id="@+id/wb_seekbar" androi ...
- C#实现的根据日期得到今天是星期几
算法如下: 基姆拉尔森计算公式: W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7 在公式中d表示日期中的日数,m表示月份数,y表示年数.注意:在公式中有 ...
- js知识地图--js大脑图beta01版正式发布
原文地址 http://zhangyaochun.iteye.com/blog/1682605 原作者:zhangyaochun
- nginx 404重定向到自定义页面
在访问时遇到上面这样的404错误页面,我想99%(未经调查,估计数据)的用户会把页面关掉,用户就这样悄悄的流失了.如果此时能有一个漂亮的页面能够引导用户去他想去的地方必然可以留住用户.因此,每一个网站 ...
- PHP+Redis 实例 页面缓存
前提分析! 上面的图,我分为了三个层级去做页面缓存,其实不一定要三个层面都实现的,如果你做了页面级的,项目初期是够了,作为接口级,基本可以解决很多吞吐量. 对于上面的三个层级,我用了同一个方法去做. ...
- Spring+SpringMVC+MyBatis+Maven框架整合
本文记录了Spring+SpringMVC+MyBatis+Maven框架整合的记录,主要记录以下几点 一.Maven需要引入的jar包 二.Spring与SpringMVC的配置分离 三.Sprin ...