Программирование >>  Расширенная версия языка c++ 

1 ... 8 9 10 [ 11 ] 12 13 14 ... 227


Глава 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++

const cast

explicit

register

switch

union

auto

continue

extern

long

reJnlerpret cast

template

unsigned

bool

default

false

mutable

return

this

using

break

delete

float

namespace

short

throw

virtual

case

signed

true

void

catch

double

friend

operator

size of

volatile

char

dynamic cast

goto

private

static

typedef

wchar t

class

else

protected

static cast

typeid

while

const

enum

inline

public

struct

typename

Проверка усвоения материала гаавц


Попытайтесь выполнить следующие упражнения и ответить на вопросы.

1. Дайте краткие определения полиморфизма, инкапсуляции и наследования.

2. Как включить в программу C++ комментарии?



1 ... 8 9 10 [ 11 ] 12 13 14 ... 227

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика