摘要: 8.3 声明符的含义1、声明符列表出现在可选的(第7章)decl-specifier-seq(7.1)之后。每个声明符只能包含一个declarator-id;它对被声明的标识符进行命名。除了特殊函数(12.3, 12.4, 13.5)声明、模板特化或局部特化(14.7)声明之外,declarator-id中的unqualified-id必须是简单标识符。此外,declarator-id只在以下情况才允许使用限定形式:在所属类之外定义成员函数(9.3)或静态数据成员(9.4);在所属名字空间之外定义或显式实例化函数或变量成员;在所属名字空间之外定义已声明的显式特化;声明其它类或名字空间的成员为友 阅读全文
posted @ 2006-04-21 17:11 Goncely 阅读(479) 评论(0) 推荐(0) 编辑
摘要: 8.2 歧义消解1、由函数式转型和6.8所述声明(声明符以左括号开头)的相似性而引起的歧义也会出现在声明的上下文中。这时,构造体可能为参数名被冗余的圆括号括起来的函数声明(如int f(int (n))),也可能是具有函数式转型初始化体的对象声明(如int n(int(1.0)))。同6.8一样,歧义消解的方案是将任何能当作声明的构造体看作是一个声明(比如:优先将int (n)看作是对int型变量n的声明,而不是对变量n的强制整型转换;这样导致的一个直接后果是将int f(int (n))解析为函数声明,而不是被n初始化的整型变量f的声明。)。[注:也可通过下列方法对一个可能会引起上述歧义的声 阅读全文
posted @ 2006-04-21 12:26 Goncely 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 8.1 类型名1、进行显式类型转换,或作为sizeof,,new和typeid的参量时,需要指定类型的名字。类型名字可通过type-id给出,type-id在句法上等同于省略了名字的对象或函数声明。type-id:type-specifier-seq abstract-declaratoropttype-specifier-seq:type-specifier type-specifier-seqoptabstract-declarator:ptr-operator abstract-declaratoroptdirect-abstract-declaratordirect-abstract- 阅读全文
posted @ 2006-04-21 11:22 Goncely 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 8 声明符1、声明中的声明符声明了一个对象、函数或类型。出现在声明中的init-declarator-list是一个由逗号分隔的声明符序列,其中的每个声明符可具有一个初始化体。init-declarator-list:init-declaratorinit-declarator-list , init-declaratorinit-declarator:declarator initializeropt2、声明由说明符(decl-specifier-seq; 7.1)和声明符(init-declarator-list)两个部分构成。说明符给出了被声明对象、函数或类型定义的类型、存储类和其它属性 阅读全文
posted @ 2006-04-21 11:20 Goncely 阅读(392) 评论(0) 推荐(0) 编辑
摘要: 6.8 歧义消解1、在包含表达式语句和声明的语法中存有歧义:以函数式显示类型转换(5.2.3)为最左子表达式的表达式语句可能无法同第一个声明符以左括号开头的声明区分开来。在这种情况下,语句是一个声明(即当一个语句即能为表达式语句又能为声明语句的时候,优先把它当成是声明语句)。 [注:为了消歧,可能需要检查整个语句以确定其为一个表达式语句还是声明。许多例子都可用此法消除歧义。例如:假定T为simple-type-specifier(7.1.5),T(a)->m = 7; // expression-statementT(a)++; //expression-statementT(a,5)& 阅读全文
posted @ 2006-04-21 11:03 Goncely 阅读(353) 评论(0) 推荐(0) 编辑