为什么点运算符 (.) 可以与 private class members/methods 一起使用?

Why is it possible for the dot operator (.) to be used with private class members/methods?

有点愚蠢的问题,但我突然想到了这个问题:

为什么可以将点运算符用于对象的私有成员(在 member/friend 函数中)?我承认我已经使用它一段时间了,但直到现在我才想到它。但是考虑到它被用于public成员函数,似乎有点奇怪。

谁能提供一些见解?

例如(编辑:我正在学习 class 中的重载运算符):

rational rational::operator/(const rational &obj2) const
{
    rational value;
    value.num = (*this).num * obj2.denom;
    value.denom = (*this).denom * obj2.num;
    return value;
}

谢谢大家的回答! :)

. 一般用于成员访问(方法或变量),与可见性无关。这只是一种语言设计选择。通常,人们会尽量避免添加不必要的语法,而“a.b 意味着我们正在访问 a 的成员 b”是一个很好且简单的规则——比必须学习例如“a.b 用于访问 public 方法,a#b 用于访问私有方法,a@b 用于访问 public 字段,...”。

但是请注意,使用 . 从 class 自己的代码之外访问私有成员是一个编译错误(除非您是从 class 或声明为成员 class 的友元的方法)。大多数语言的语法都有规则指定可以在哪些上下文中使用该语法。