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抱歉,没有-如果你真的想看的话,请看一下标准的和好的。再次感谢你的帮助。我听从你的建议,在规范中找到了这个。我决定发布额外的答案。