为什么点运算符(。)可以与私有类成员/方法一起使用?

时间:2015-04-02 20:25:17

标签: c++ operators

有点愚蠢的问题,但这突然出现在我脑海中:

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

任何人都可以提供一些见解吗?

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

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

谢谢所有回答过的人! :)

1 个答案:

答案 0 :(得分:0)

无论可见性如何,

.一般用于成员访问(方法或变量)。这只是语言设计的选择。通常,人们试图避免添加超出必要的语法,“a.b意味着我们访问b的成员a”是一个很好而且简单的规则 - 这比必须学习,例如“a.b用于访问公共方法,a#b用于访问私有方法,a@b用于访问公共字段,...”。

请注意,使用.从类外部代码访问私有成员是一个编译错误(除非您是从声明为a的类或方法执行此操作)会员班级的朋友)。大多数语言的语法都有规则指定可以使用语法的上下文。