C++ A*A班怎么样;由C+解析的声明+;?
我正在考虑官方规范中的一个例子:C++ A*A班怎么样;由C+解析的声明+;?,c++,class,types,specifications,C++,Class,Types,Specifications,我正在考虑官方规范中的一个例子: class A * A; 我已经读到这一行介绍了两个名称:class A,它只能通过详细的说明符类型和指向A的指针来访问。这一行是否完全等同于下面两行 class A; A * A; 那一行只是语法糖,实际上我们有两行,正如我在上面指定的那样?或者A类*A如何由编译器解析?是的,内联声明只是语法糖。您正在转发声明该名称,并在同一行中使用该名称。我正在工作草案N3797中寻找更详细的答案,我发现以下内容: §8.3.3: decl-specifier:
class A * A;
我已经读到这一行介绍了两个名称:class A
,它只能通过详细的说明符类型和指向A的指针来访问。这一行是否完全等同于下面两行
class A;
A * A;
那一行只是语法糖,实际上我们有两行,正如我在上面指定的那样?或者
A类*A如何代码>由编译器解析?是的,内联声明只是语法糖。您正在转发声明该名称,并在同一行中使用该名称。我正在工作草案N3797中寻找更详细的答案,我发现以下内容:
§8.3.3:
decl-specifier:
storage-class-specifier
type-specifier
function-specifier
friend
typedef
constexpr
decl-specifier-seq:
decl-specifier attribute-specifier-seq_*opt*
decl-specifier decl-specifier-seq
type-specifier:
trailing-type-specifier
class-specifier
enum-specifier
因此,特定标识符的声明具有td
其中,T
的形式为attribute-specifier-seq_*opt*decl-specifier seq
,D
是一个声明符
§7.1:
decl-specifier:
storage-class-specifier
type-specifier
function-specifier
friend
typedef
constexpr
decl-specifier-seq:
decl-specifier attribute-specifier-seq_*opt*
decl-specifier decl-specifier-seq
type-specifier:
trailing-type-specifier
class-specifier
enum-specifier
§7.1.6:
decl-specifier:
storage-class-specifier
type-specifier
function-specifier
friend
typedef
constexpr
decl-specifier-seq:
decl-specifier attribute-specifier-seq_*opt*
decl-specifier decl-specifier-seq
type-specifier:
trailing-type-specifier
class-specifier
enum-specifier
§8.3.1:
decl-specifier:
storage-class-specifier
type-specifier
function-specifier
friend
typedef
constexpr
decl-specifier-seq:
decl-specifier attribute-specifier-seq_*opt*
decl-specifier decl-specifier-seq
type-specifier:
trailing-type-specifier
class-specifier
enum-specifier
在声明中,td
其中D
具有以下形式
*属性说明符-seq_*opt*cv-qualifier-seq_*opt*D1
和
声明td1
中的标识符是“派生声明器类型列表T
”,然后
D
的标识符类型是“派生声明器类型列表cv限定符seq指向T
”的指针
现在类说明符
包含类
关键字。因此类A*A
是有效的语法结构,其中*A
是声明符。A*A行做什么,不做什么sense@TejasPatel在第二个例子中,它声明了一个a*
@LuchianGrigore类型的变量a
,如果它存在,它不会调用操作符*?@AdriC.S。不,这是声明。谢谢你的回答。但我正试图在规范中找到一些关于它的信息。你能给我一些参考吗?另外,你可以声明一个与类同名(大小写和全部)的变量并不意味着你应该这样做我不明白为什么这条线在C++中是有效的。你能给我一份推荐信吗?@DmitryFucintv抱歉,没有-如果你真的想看的话,请看一下标准的和好的。再次感谢你的帮助。我听从你的建议,在规范中找到了这个。我决定发布额外的答案。