gpt4 book ai didi

c++ - 为什么不允许对成员函数的内联定义进行额外限定?

转载 作者:太空狗 更新时间:2023-10-29 20:58:35 26 4
gpt4 key购买 nike

如果我们看一下成员声明的语法,它看起来像这样:

member-declaration:       function-definition ;function-definition:       attribute-specifier-seqopt decl-specifier-seqopt declarator        virt-specifier-seqopt function-bodydeclarator:       noptr-declarator parameters-and-qualifiers trailing-return-type

This disallows the syntax:

struct B {
A B::*B::read();
};

为什么它不允许在函数名称之前使用可选的 nested-name-specifier::

最佳答案

语法根本不禁止声明由 nested-name-specifier 命名的实体。
事实上,它必须 - for friend声明:

class A
{
friend void OtherNamespace::foo();
};

这是一个带有声明说明符 friend成员声明。它涵盖了(大胆强调我的):

member-declaration:
     attribute-specifier-seqopt decl-specifier-seqopt member-declarator-listopt ;

member-declarator:
     declarator virt-specifier-seqopt pure-specifieropt

现在,声明符具有以下语法:

declarator:
    ptr-declarator

ptr-declarator:
    noptr-declarator

noptr-declarator:
    declarator-id

declarator-id:
    ...opt id-expression

最后,一个id-expression是

id-expression:
    qualified-id

关于c++ - 为什么不允许对成员函数的内联定义进行额外限定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27332511/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com