c++ - 是否存在表达式 `a.b::c` 有意义的上下文?

标签 c++

在 C++ 中考虑语法规则:

member-access-expression: LHS member-access-operator RHS
(op 是 .)

LHS=unqualified id-expression 例如引用实例变量。
RHS=qualified id-expression(至少有一个嵌套标识符)

示例:a.b::c

如果它可以通过语义检查,那会是什么情况?

以下实验:

struct B{};

struct A
{
    B b;
};

int main()
{
    A a;
    a.b::c;
}

返回

'b' is not a class, namespace, or enumeration
a.b::c;
  ^

( demo )

这往往向我暗示,在成员(member)访问权上不可能有任何合格 ID 的法律案例。

最佳答案

一个非常简单的例子是如果你想调用父类的成员函数:

struct A {
    void f();
};

struct B: A {
    void f();
};

B b;
b.A::f();

关于c++ - 是否存在表达式 `a.b::c` 有意义的上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56253767/

相关文章:

c++ - 什么是完全限定名称?

c++ - 如何在 SDL 2.0 中实时获取所有事件的 "list"?

c++ - 为什么 clang 会使我的简单阶乘函数过于复杂?

c++ - 如何使用 opengl 将 FPS 设置为 30?

C++11 随机数

c++ - 模板:SFINAE 特化未得到应用

c++ - 给定条件如何维持发生顺序

c++ - C++二维动态数组

c++ - 如何优化对 C++ 接口(interface)的外部引用?

c++ - C++11 中的正则表达式与 PHP