Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Дополнение С++. Преобразование типов. Дружественные функции и перегрузка операций. Преобразование данных

Автор:   •  Ноябрь 6, 2023  •  Реферат  •  4,430 Слов (18 Страниц)  •  58 Просмотры

Страница 1 из 18

Дополнение С++. Преобразование типов. Дружественные функции и перегрузка операций. Преобразование данных.

1. Дополнение С++        1

1.1. Область видимости        1

1.2. Объявление в операторах        1

1.3. Перегрузка функций        2

1.4. Значения формальных параметров по умолчанию        2

1.5. Ссылки и параметры на ссылки        3

2. Преобразование, определяемые классом        5

3. Перегрузка и выбор функции        7

4. Дружественные функции        8

5. Перегружаемые операции        9

5.1. Перегрузка унарного оператора        10

5.2. Перегрузка бинарного оператора        10

5.3. Операция вызова функции        11

5.4. Перегруженные операции - функции-члены против дружественных функций        11

5.5. Перегружаемые оператор присваивания и индексированные операторы        12

5.6. Оператор присваивания        13

5.7. Присваивание против инициализации        13

5.8. Перегруженные операции new delete, ->        14

1. Дополнение С++

1.1. Область видимости

Операции расширения области видимости (::) в С++ используются в различных контекстах. Она используется при определении функций-членов за пределами объявления класса, а также для доступа к переменным которые в данной области видимости замаскированы (невидимы). Пример. Автоматическая переменная r в функция increment и main маскирует глобальную переменную r. При помощи операции :: обе эти функции получают доступ к глобальным переменным.

Листинг 1. Операция расширения области видимости

#include <stdio.h>
float r=2.6;
int increment(int k) {
int r=k+15;
printf(“ В функции increment: значение r внутри increment = %d\n ”,r);
printf(“ В функции increment: значение r вне increment = %0.2f\n ”,::r);
return r;
}
void main(void){
int r=increment(20);
printf(“ В функции main: значение r внутри increment = %d\n ”,r);
printf(“ В функции main: значение r вне increment = %0.2f\n ”,::r);
}

Результат работы
В функции increment: значение r внутри increment = 35
В функции increment: значение r вне increment = 2.60;
В функции main: значение r внутри increment = 35
В функции main: значение r вне increment = 2.6

1.2. Объявление в операторах

В С++ объявления переменных могут быть размещены произвольно, даже внутри операторов.

for(int index=0; index<10; index++) { }

Трудно поместить объявления int index=0 ближе к точке первого использования переменной индекс, чем прямо внутри цикла. Область действия переменной index не ограничивается телом цикла, а простирается до конца блока, в котором этот цикл находится.

1.3. Перегрузка функций

Имена функций и операций могут быть перегружены в пределах одной и той же области видимости. Компилятор отличает одну функцию от другой (один оператор от другого) по ее сигнатуре. Сигнатура функции задается порядком следования и типами параметров.

Листинг 2. Перегруженные функции

#include <stdio.h>
#include <string.h>
int noName(int first) { return first*first; }
int niName(unsigned first) { return -first*first; }
char noName(char first) { return first+3;}
int noName(int first, char *second) { return first*strlen(second); }
int noName(int first,char second) { return first*second; }
float noName(float r) { return r*r; }
double noName(double r) { return r*r; }
void main(void) {
ptintf(“%d\n”,noName(4));
printf(“%d \n”,noName((unsigned)4));
printf(“%c\n”,noName(‘a’));
printf(“%d\n”,noName(4,”abc”));
printf(“%d\n”,noName(4,’a’));
printf(“%0.2f\n”,noName((float)1.2));
printf(“%0.2f\n”,noName((double)1.2));
}
Результат работы
….

...

Скачать:   txt (53.2 Kb)   pdf (252.7 Kb)   docx (792.2 Kb)  
Продолжить читать еще 17 страниц(ы) »
Доступно только на Essays.club