ВУЗ:
Составители:
Рубрика:
21
Доступ к члену класса
Доступ к члену класса определяется с помощью операции ->:
первичное-выражение -> первичное-выражение
Он считается унарной операцией. Для объекта класса x выражение x->m интерпретиру-
ется как (x.operator->())->m. Отсюда следует, что функция operator->() должна возвра-
щать или указатель на класс, или ссылку на класс, или объект класса, для которого оп-
ределена функция operator->(). Она должна быть нестатической функцией-членом клас-
са.
Инкремент и декремент
Функция с именем operator++ и с одним параметром задает для объектов неко-
торого класса операцию префиксного инкремента ++. Функция с именем operator++ и с
двумя параметрами задает для объектов некоторого класса операцию постфиксного ин-
кремента ++. Для постфиксной операции ++ второй параметр должен быть типа int, и,
когда в выражении встречается операция постфиксного инкремента, функция
operator++ вызывается
со вторым параметром, равным нулю.
Префиксные и постфиксные операции декремента -- определяются аналогич-
ным образом.
Дружественные функции
Ключевое слово – Friend
Называется функция внешне к классу, которая имеет доступ к закрытым пере-
менным класса.
Синтаксис:
Friend тип имя _ функции ( пар-ры );
Ключевым словом friend дружественная функция описывается внутри класса,
но вне класса описывается тело функции без ключевого слова friend.
Случаи использования friend функции
1. Если нужна внешняя функция для класса, имеющая доступ к внутренним перемен-
ным класса.
Функции сортировки можно сделать в friend функции.
2.
Несколько классов и нужная функция, имеющая доступ к закрытым переменным
классов.
3.
Если необходимо перегрузить левосторонние операции
My obj;
My obj 1 = obj+5;
Описанный в классе my operator + не может выполнить следующую операцию:
My obj 2 = 5 + obj; хотим к числу прибавить объект, по определению перегру-
женный. Оператор левостороннюю операцию для объекта выполнить не может, поэто-
му в класс добавляют аналогичные friend операторы, так как friend функция может
иметь любое кол-во параметров. Следовательно, friend оператор может иметь
анало-
гично любое кол-во параметров.
Чтобы прибавить слева число (наш случай) необходимо два параметра:
1)
int
2)
тип my.
21 Доступ к члену класса Доступ к члену класса определяется с помощью операции ->: первичное-выражение -> первичное-выражение Он считается унарной операцией. Для объекта класса x выражение x->m интерпретиру- ется как (x.operator->())->m. Отсюда следует, что функция operator->() должна возвра- щать или указатель на класс, или ссылку на класс, или объект класса, для которого оп- ределена функция operator->(). Она должна быть нестатической функцией-членом клас- са. Инкремент и декремент Функция с именем operator++ и с одним параметром задает для объектов неко- торого класса операцию префиксного инкремента ++. Функция с именем operator++ и с двумя параметрами задает для объектов некоторого класса операцию постфиксного ин- кремента ++. Для постфиксной операции ++ второй параметр должен быть типа int, и, когда в выражении встречается операция постфиксного инкремента, функция operator++ вызывается со вторым параметром, равным нулю. Префиксные и постфиксные операции декремента -- определяются аналогич- ным образом. Дружественные функции Ключевое слово – Friend Называется функция внешне к классу, которая имеет доступ к закрытым пере- менным класса. Синтаксис: Friend тип имя _ функции ( пар-ры ); Ключевым словом friend дружественная функция описывается внутри класса, но вне класса описывается тело функции без ключевого слова friend. Случаи использования friend функции 1. Если нужна внешняя функция для класса, имеющая доступ к внутренним перемен- ным класса. Функции сортировки можно сделать в friend функции. 2. Несколько классов и нужная функция, имеющая доступ к закрытым переменным классов. 3. Если необходимо перегрузить левосторонние операции My obj; My obj 1 = obj+5; Описанный в классе my operator + не может выполнить следующую операцию: My obj 2 = 5 + obj; хотим к числу прибавить объект, по определению перегру- женный. Оператор левостороннюю операцию для объекта выполнить не может, поэто- му в класс добавляют аналогичные friend операторы, так как friend функция может иметь любое кол-во параметров. Следовательно, friend оператор может иметь анало- гично любое кол-во параметров. Чтобы прибавить слева число (наш случай) необходимо два параметра: 1) int 2) тип my.
Страницы
- « первая
- ‹ предыдущая
- …
- 19
- 20
- 21
- 22
- 23
- …
- следующая ›
- последняя »