13.3.2. Доступ к членам класса

13.3.2. Доступ к членам класса

Говорят, что определение функции-члена принадлежит области видимости класса независимо от того, находится ли оно вне или внутри его тела. Отсюда следуют два вывода:

* в определении функции-члена могут быть обращения к любым членам класса, открытым или закрытым, и это не нарушает ограничений доступа;

* когда функция-член обращается к членам класса, операторы доступа "точка" и "стрелка" не необходимы.

Например:

#include string

void Screen::copy( const Screen &sobj )

{

// если этот объект и объект sobj - одно и то же,

// копирование излишне

// мы анализируем указатель this (см. раздел 13.4)

if ( this != &sobj )

{

_height = sobj._height;

_width = sobj._width;

_cursor = 0;

// создаем новую строку;

// ее содержимое такое же, как sobj._screen

_screen = sobj._screen;

}

}

Хотя _screen, _height, _width и _cursor являются закрытыми членами класса Screen, функция-член copy() работает с ними напрямую. Если при обращении к члену отсутствует оператор доступа, то считается, что речь идет о члене того класса, для которого функция-член вызвана. Если вызвать copy() следующим образом:

#include quot;Screen.hquot;

int main()

{

Screen s1;

// Установить s1

Screen s2;

s2.copy(s1);

// ...

}

то параметр sobj внутри определения copy() соотносится с объектом s1 из функции main(). Функция-член copy() вызвана для объекта s2, стоящего перед оператором “точка”. Для такого вызова члены _screen, _height, _width и _cursor, при обращении к которым внутри определения этой функции нет оператора доступа, – это члены объекта s2. В следующем разделе мы рассмотрим доступ к членам класса внутри определения функции-члена более подробно и, в частности, покажем, как для поддержки такого доступа применяется указатель this.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Имя класса

Из книги Самоучитель UML автора Леоненков Александр

Имя класса Имя класса должно быть уникальным в пределах пакета, который описывается некоторой совокупностью диаграмм классов (возможно, одной диаграммой). Оно указывается в первой верхней секции прямоугольника. В дополнение к общему правилу наименования элементов


Атрибуты класса

Из книги Справочное руководство по C++ автора Страустрап Бьярн

Атрибуты класса Во второй сверху секции прямоугольника класса записываются его атрибуты (attributes) или свойства. В языке UML принята определенная стандартизация записи атрибутов класса, которая подчиняется некоторым синтаксическим правилам. Каждому атрибуту класса


R.5.2.4 Доступ к члену класса

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

R.5.2.4 Доступ к члену класса Постфиксное выражение, за которым следует точка (.) и имя, является постфиксным выражением. Первое выражение должно быть объектом типа класс, а имя должно быть именем члена этого класса. Результатом будет поименованный член объекта и он будет


R.9.2 Члены класса

Из книги Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT автора Фролов Александр Вячеславович

R.9.2 Члены класса список-членов: описание-члена список-членов opt спецификация-доступа : список-членов optописание-члена: спецификации-описания opt список-описателей-членов opt ; определение-функции ; opt уточненное-имя


R.11 Контроль доступа к членам

Из книги Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ автора Мейерс Скотт

R.11 Контроль доступа к членам Член класса может быть:• частным (private); это значит, что его имя можно использовать только в функциях-членах и друзьях класса, в котором он описан;• защищенным (protected); это значит, что его имя можно использовать только в функциях-членах и друзьях


R.11.5 Доступ к защищенным членам

Из книги C++ для начинающих автора Липпман Стенли

R.11.5 Доступ к защищенным членам Друг или функция-член производного класса имеет доступ к защищенному статическому члену базового класса. Друг или функция-член производного класса могут получить доступ к защищенному нестатическому члену одного из своих базовых классов


R.13.4.6 Доступ к члену класса

Из книги автора

R.13.4.6 Доступ к члену класса Доступ к члену класса определяется с помощью операции -›:первичное-выражение -› первичное-выражениеОн считается унарной операцией. Для объекта класса x выражение x-›m интерпретируется как (x.operator-›())-›m. Отсюда следует, что функция operator-›()


Тип класса

Из книги автора

Тип класса Любой язык, совместимый с .NET, поддерживает, как минимум, тип класса, который является "краеугольным камнем" объектно-ориентированного программирования (ООП). Класс может состоять из любого числа членов (таких, как свойства, методы и события) и элементов данных


Тип класса в C#

Из книги автора

Тип класса в C# Если вы имеете опыт создания объектов в рамках какого-то другого языка программирования, то, несомненно, знаете о роли определений классов. Формально говоря, класс – это определенный пользователем тип (User-Defined Type - UDT), который скомпонован из полей данных


Конструкторы класса

Из книги автора

Конструкторы класса Для класса CObject определены два конструктора. Первый конструктор используется по умолчанию и не имеет параметров. Именно этот конструктор вызывается конструкторами классов, наследованных от CObject:CObject();Второй конструктор класса CObject называется


Конструктор класса

Из книги автора

Конструктор класса Класс CString имеет несколько различных конструкторов, позволяющих создавать строки на основе различных данных.Конструктор класса CString, используемый по умолчанию, не имеет параметров. Он создает пустую строку. В последствии вы можете записать в нее любой


Правило 23: Предпочитайте функциям-членам функции, не являющиеся ни членами, ни друзьями класса

Из книги автора

Правило 23: Предпочитайте функциям-членам функции, не являющиеся ни членами, ни друзьями класса Возьмем класс для представления Web-браузера. В числе прочих такой класс может предлагать функции, который очищают кэш загруженных элементов, очищают историю посещенных URL и


13.1.3. Доступ к членам

Из книги автора

13.1.3. Доступ к членам Часто бывает так, что внутреннее представление типа класса изменяется в последующих версиях программы. Допустим, опрос пользователей нашего класса Screen показал, что для его объектов всегда задается размер экрана 80 ? 24. В таком случае было бы желательно


14.2. Конструктор класса

Из книги автора

14.2. Конструктор класса Среди других функций-членов конструктор выделяется тем, что его имя совпадает с именем класса. Для объявления конструктора по умолчанию мы пишем2:class Account {public:// конструктор по умолчанию ...Account();// ...private:char *_name;unsigned int _acct_nmbr;double _balance;};Единственное


14.3. Деструктор класса

Из книги автора

14.3. Деструктор класса Одна из целей, стоящих перед конструктором, - обеспечить автоматическое выделение ресурса. Мы уже видели в примере с классом Account конструктор, где с помощью оператора new выделяется память для массива символов и присваивается уникальный номер счету.


17.3. Доступ к членам базового класса

Из книги автора

17.3. Доступ к членам базового класса Объект производного класса фактически построен из нескольких частей. Каждый базовый класс вносит свою долю в виде подобъекта, составленного из нестатических данных-членов этого класса. Объект производного класса построен из