Си++/Объектно-ориентированное программирование: различия между версиями

Содержимое удалено Содержимое добавлено
википедия
Строка 86:
Кроме того, в методах не обязательно писать <tt>this->f</tt>, достаточно просто написать "f".
 
Имена, примененные в методе, ищутся: а)
* по {} блокам в самом методе, формальные параметры есть часть самого внешнего блока;
б)* поля класса, если нашлось такое — то понимается как <tt>this->name</tt>; в)
* глобалы.
 
<big><source lang=cpp>
Строка 122 ⟶ 124 :
</source></big>
 
Отличия от глобала: а)
* для нее действуют метки <tt>private/protected/public<tt>;
б)* имя объявлено в пространстве имен класса, а не в глобальном пространстве имен.
 
Точно так же <tt>statfunc</tt> — не настоящий метод, а просто такая функция:
Строка 137 ⟶ 140 :
Описывается она так же, как и метод, но в ней не бывает <tt>this</tt> и она не может прямо использовать имена нестатических (настоящих) полей и методов класса.
 
Вызвана она может быть: а)
* из любого метода, и настоящего, и статического, как <tt>statfunc()</tt>;
б)* извне класса как <tt>C::statfunc</tt>, если позволяют метки доступа;
в)* как <tt>obj.statfunc()</tt> или <tt>pobj->statfunc()</tt>, в этих случаях <tt>obj</tt> и <tt>pobj</tt>
не более чем указывают на тип и не используются при вызове.