|
Программирование >> Расширенная версия языка c++
Глава 1 ткий обзор С++ 39 2. Ниже приведен другой пример перегрузки функций. В этом случае функция date() перегружается для получения даты либо в виде строки, либо в виде трех целых. В обоих этих случаях функция выводит на экран переданные ей данные. ttinclude <iostream> using namespace std; voi r *date) ; дата в виде строки void date (int month, int day, int year); дата в виде чисел int main О date ( 8/23/99 ) ; ..... .. >> : date( 8, 23, 99) ; . return 0; , : ... Дата в виде строки void date(char *date) cout Дата: date \n ; Дата в виде целых void date (int month, int day, int year) cout Дата: month / ; cou< da / year \n ; Этот пример показывает, как перегрузка функций может обеспечить для функции более понятный интерфейс. Поскольку дату очень естественно представлять либо в виде строки, либо в виде трех целых чисел, содержащих день и год, нужно просто выбрать наиболее подходящую версию в соответствии с ситуацией. 3. До сих пор мы рассматривали перегруженные функции, отличающиеся типом своих аргументов. Однако перегруженные функции могут также отличаться и числом аргументов, как показано в приведенном ниже примере: ttinclude <iostream> using namespace std; void fl(int a) ; - void fl(int a, int b) ; . , int znain() { fl(lO)? fl(10, 20); couW< (int a) \n ; voi (int a, int b) л cou << nt a, int b) \n ; 4. Важно понимать, что тип возвращаемого значения сам по себе не является достаточным отличием для перегрузки функции. Если две функции отличаются только типом возвращаемых данных, компилятор не всегда сможет выбрать нужную. Например, следующий фрагмент неправилен, поскольку в нем имеет место избыточность: Это все неправильно и не будет компилироваться int fl (int а) ; double fl(int a); f1 (10); какую функцию выбрать компилятору??? Как написано в у компилятора нет способа выяснить, какую версию fl{) вызвать. 1. Создайте функцию sroot(), которая возвращает квадратный корень своего аргумента. Перегрузите sroot() тремя способами: чтобы получить квадратный корень целого, длинного целого и числа с плавающей точкой двойной точности. (Для непосредственного подсчета квадратного корня вы можете использовать стандартную библиотечную функцию sqrt().) 2. Стандартная библиотека C++ содержит три функции: double atof(const char *s); in (const char *s); - long atol(const char *з); Эти функции возвращают численное значение, содержащееся в строке, на которую у>:азывает s. Заметьте, что atof() возвращает double, atoi возвращает int и atol возвращает long. Почему нельзя перегрузить эти функции? 3. Создайте функцию min(), которая возвращает наименьший из двух численных аргументов, используемых при вызове функции. Перегрузите функцию - return 0; г- г ., , voi (int a) Глава 1, Краткий обзор C++ itiinO так, чтобы она воспринимала в качестве аргументов символы, целые и действительные двойной точности. 4. Создайте функцию sleep{), приостанавливающую работу компьютера на столько секунд, сколько указано в аргументе функции. Перегрузите sleepO так, чтобы она могла вызываться или с целым, или со строкой, задающей целое. Например, оба этих вызова должны заставить компьютер остановиться на 10 секунд: sleep (10) ; : sleep ( 10 ) - Продемонстрируйте работу ваших функций, включив их в короткую программу. (Почувствуйте удобство их применения для задания паузы в работе компьютера.) 1.8. Ключевые слова C++ В C++ поддерживаются все ключевые слова С и кроме этого еще 30 ключевых слов, которые относятся только к языку C++. Все определенные для С++ ьслючевые слова представлены в табл. 1.1. Кроме них в ранних версиях C++ было определено ключевое слово overload, которое сейчас считается устаревшим. Таблица ключевые слова C++
Проверка усвоения материала гаавц Попытайтесь выполнить следующие упражнения и ответить на вопросы. 1. Дайте краткие определения полиморфизма, инкапсуляции и наследования. 2. Как включить в программу C++ комментарии?
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |