有点愚蠢的问题,但这突然出现在我脑海中:
为什么点运算符可以与对象的私有成员一起使用(在成员/朋友函数中)?我承认我已经使用了一段时间了,但直到现在我才想到它。但考虑到它用于公共成员函数,似乎有点奇怪。
任何人都可以提供一些见解吗?
例如(编辑:我正在学习类中重载的运算符):
rational rational::operator/(const rational &obj2) const
{
rational value;
value.num = (*this).num * obj2.denom;
value.denom = (*this).denom * obj2.num;
return value;
}
谢谢所有回答过的人! :)
答案 0 :(得分:0)
.
一般用于成员访问(方法或变量)。这只是语言设计的选择。通常,人们试图避免添加超出必要的语法,“a.b
意味着我们访问b
的成员a
”是一个很好而且简单的规则 - 这比必须学习,例如“a.b
用于访问公共方法,a#b
用于访问私有方法,a@b
用于访问公共字段,...”。
请注意,使用.
从类外部代码访问私有成员是一个编译错误(除非您是从声明为a的类或方法执行此操作)会员班级的朋友)。大多数语言的语法都有规则指定可以使用语法的上下文。