
- •1 Вопрос: Поняття алгоритму. Властивості алгоритму. Способи описування алгоритмів
- •40 Вопрос
- •Создание простого конструктора
- •Представление о деструкторе
- •Что вам необходимо знать
- •41 Вопрос: ------
- •42 Вопрос: Урок 26. Наследование
- •Простое наследование
- •43 Вопрос 44 вопрос:
- •Дружні функції
- •46 Вопрос:
- •Первое знакомство с перегрузкой функций
- •Когда необходима перегрузка
- •Что вам необходимо знать
- •Создание простого шаблона функции
- •Шаблоны, которые используют несколько типов
- •Что вам необходимо знать
- •Шаблоны классов
- •16.1. Определение шаблона класса
- •50 Вопрос:
- •Класс cFile
- •Структуры
- •Класифікація мов програмування
- •Типы переменных. Объявление переменных. Константы. Присваивание. Арифметические операции. Инкремент и декремент.
46 Вопрос:
Перегрузка конструкторов
Как вы уже знаете из урока 13, C++ позволяет вашим программам перегружать определения функций, указывая альтернативные функции для других типов параметров. C++ позволяет вам также перегружать конструкторы. Следующая программа CONSOVER.CPP перегружает конструктор employee. Первый конструктор требует, чтобы программа указывала имя служащего, номер служащего и оклад. Второй конструктор запрашивает пользователя ввести требуемый оклад, если программа не указывает его:
employee::employee(char *name, long employee_id)
{ strcpy(employee::name, name); employee::employee_id = employee_id; do
{ cout << "Введитеокладдля "<< name << " меньше $50000: "; cin >> employee::salary; } while (salary >= 50000.0); }
Внутри определения класса программа должна указать прототипы для обоих конструкторов, как показано ниже:
class employee
{ public: employee (char *, long, float);|___ Прототипыперегруженных employee(char *, long); |функций void show_employee(void); int change_salary(float); long get_id(void); private: char name [64]; long employee_id; float salary; }
Ниже приведена реализация программы CONSOVER.CPP:
#include <iostream.h>
#include <string.h>
class employee
{ public: employee(char *, long, float); employee(char *, long); void show_employee(void); int change_salary(float) ; long get_id(void); private: char name [64]; long employee_id; float salary; };
employee::employee(char *name, long employee_id, float salary)
{ strcpy(employee::name, name); employee::employee_id = employee_id; if (salary < 50000.0) employee::salary = salary; else // Недопустимыйоклад employee::salary = 0.0; }
employee::employee(char *name, long employee_id)
{ strcpy(employee::name, name); employee::employee_id = employee_id; do
{ cout << "Введитеокладдля "<< name << " меньше $50000: "; cin >> employee::salary; } while (salary >= 50000.0); }
void employee::show_employee(void)
{ cout<< "Служащий: " << name << endl; cout << "Номерслужащего: " << employee_id << endl; cout << "Оклад: " << salary << endl; }
void main(void)
{ employee worker("Happy Jamsa", 101, 10101.0); employee manager("Jane Doe", 102); worker.show_employee(); manager.sbow_employee(); }
Если вы откомпилируете и запустите эту программу, на вашем экране появится запрос ввести оклад для Jane Doe. Когда вы введете оклад, программа отобразит информацию об обоих служащих.
47 вопрос: перегрузка функций в с++
Урок 13. Перегрузка функций
При определении функций в своих программах вы должны указать тип возвращаемого функцией значения, а также количество параметров и тип каждого из них. В прошлом (если вы программировали на языке С), когда у вас была функция с именем add_values, которая работала с двумя целыми значениями, а вы хотели бы использовать подобную функцию для сложения трех целых значений, вам следовало создать функцию с другим именем. Например, вы могли бы использовать add_two_values и add_three_values. Аналогично если вы хотели использовать подобную функцию для сложения значений типа float, то вам была бы необходима еще одна функция с еще одним именем. Чтобы избежать дублирования функции, C++ позволяет вам определять несколько функций с одним и тем же именем. В процессе компиляции C++ принимает во внимание количество аргументов, используемых каждой функцией, и затем вызывает именно требуемую функцию. Предоставление компилятору выбора среди нескольких функций называется перегрузкой. В этом уроке вы научитесь использовать перегруженные функции. К концу данного урока вы освоите следующие основные концепции:
• Перегрузка функций позволяет вам использовать одно и то же имя для нескольких функций с разными типами параметров.
• Для перегрузки функций просто определите две функции с одним и тем же именем и типом возвращаемого значения, которые отличаются количеством параметров или их типом.
Перегрузка функций является особенностью языка C++, которой нет в языке С. Как вы увидите, перегрузка функций достаточно удобна и может улучшить удобочитаемость ваших программ.