Почему оператор точки (.) Может использоваться с закрытыми членами / методами класса?
Немного идиотского вопроса, но он внезапно всплыл в моей голове:
Почему оператор точки может использоваться с закрытыми членами объекта (в функции member/friend)? Я признаю, что использовал это в течение некоторого времени, но я никогда не думал об этом до сих пор. Но, учитывая, что он используется для открытых функций-членов, это кажется немного странным.
Кто-нибудь может дать некоторое представление?
Например (редактировать: я изучаю перегруженные операторы в классе):
rational rational::operator/(const rational &obj2) const
{
rational value;
value.num = (*this).num * obj2.denom;
value.denom = (*this).denom * obj2.num;
return value;
}
Спасибо всем, кто ответил!:)
1 ответ
.
для доступа к элементам в целом (методы или переменные), независимо от видимости. Это был просто выбор дизайна языка. Обычно стараются избегать добавления большего количества синтаксиса, чем необходимо, и "a.b
означает, что мы получаем доступ к члену b
из a
"Это хорошее и простое правило, которое лучше, чем, например, учиться"a.b
для доступа к публичному методу, a#b
для доступа к приватному методу, a@b
для доступа к общедоступному полю...".
Обратите внимание, что, используя .
доступ к закрытому члену извне собственного кода класса является ошибкой компиляции (за исключением случаев, когда вы делаете это из класса или метода, который объявлен другом класса члена). Большая часть синтаксиса языка имеет правила, определяющие, в каких контекстах синтаксис может использоваться.