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

1 ... 19 20 21 [ 22 ] 23 24 25 ... 159


cout typeid(5+23.45+a).name() endl; результат:

double

Класс Type info содержит информацию о типе и позволяет использовать переопределенные операторы -= (равно) != (не равно) для сравнения типов (см. приведенный выше пример). Он включает две глобальные функции: before и name. Функция before позволяет сравнить лексический порядок типов, ее использование будет примерно таким: typeid(T1).before(typeid(T2));

где Т1 и Т2 - типы. Например, если А - базовый класс, а В - его производный класс, то выражение

typeid(A).before(typeid(B))

даст истинный (не ложный) результат. Выражение

typeid(int).before(typeid(double));

даст ложный результат.

Функция name возвращает имя типа. Ее использование показано в пятой программе.

При объявлении функции в языке С++ для нее можно задать аргументы по умолчанию. Так, объявление

void fun(lnt,int=5);

позволяет вызвать функцию fun двумя способами, например fun(lO) и fun(10,20). Когда у функции задан только один аргумент, второй аргумент получит значение, заданное по умолчанию. Поэтому вызов fun(lO) назначит первому аргументу значение 10, а второму - 5. Второй вызов fun(10,20) назначит аргументам значения 10 и 20.

Рассмотрим пример: #include <iostream.h>

void fun(int,char=%,float=1.25); объявление функции voiid fun(int=1,char,float); переобъявление функции

void fun(char*); объявление функции

void main (void) { int ii=10;

char cc=*;

float ff=22.33;

fun(ii); Результат: 10 % 1.25



fun(ii,cc); Результат: 10 * 1.25

fun{ii,cc,ff); Результат: 10 * 22.33

fun( Regards from Portugal\n );

Результат: Regards from Portugal fun(); Результат: 1 % 1.25

void fun(int i.char c,float f) описание функции

{ cout i \t с \t f \t endl; }

void fun(char* s) описание функции

{ cout s; }

Два следующих друг за другом объявления: void fun(int,char-%,float=1.25); void fun(int=1,char,float);

являются правильными. Второе из них добавляет в первую функцию значение первого аргумента, заданного по умолчанию. Для обоих объявлений достаточно одного описания. Новую функцию fun, заданную в виде: void fun(char*), можно отличить по числу аргументов, поэтому здесь не возникает неоднозначности.

Дополнительные пояснения и примеры, имеющие отношение к функциям с аргументами по умолчанию, приведены в §3.4.

2.6. Примеры простейших программ

на языке С++

Начнем с рассмотрения таких программ, которые показывают отличия языка С++ от языка С, но не имеют прямого отношения к объектно-ориентированному программированию.

В первой программе даются некоторые примеры ввода и вывода в языке С++. Все эти вопросы подробно рассматриваются в гл. 8. Здесь приводятся лишь минимальные сведения, которые необходимы для понимания последующих программ.

#include <iostream.h> void main(void)



int c;

{ int а; float b; char* с;

с = new char[50];

cin a b c; Введены такие данные:

34 1.432 Aveiro cout oct a \t hex a \t

dec a \n; Результат: 42 22 34 cout float: b endl c; Результат:

float: 1.432 Авейро

cerr << \nstream for errors\n ; Результат:

stream for errors

delete [] c;

В программе используются три объекта: cout, cin и cerr. Они соответственно представляют выходной поток (связанный по умолчанию с экраном дисплея), входной поток (связанный по умолчанию с клавиатурой) и поток для вывода информации об ошибках (всегда связанный с экраном дисплея). Программа использует доопределенные операторы и для вывода данных в выходной поток и получения данных из входного потока. Наряду с данными в ней использованы так называемые манипуляторы (oct - вывод в восьмеричном формате, liex - вывод в шестнадцатеричном формате, dec - вывод в десятичном формате, endl - перевод курсора в начало следующей строки). Они используются для организации форматированного вывода (т. е. вывода данных в некотором указанном формате).

Вторая программа еще раз показывает возможности объявления и описания данных в различных частях программы (см. § 2.6).

#include <iostream.h> void main(void) { int a=5;

a.++; теперь a=6

int b=3- -a; b=9

a=b*2; a=18



1 ... 19 20 21 [ 22 ] 23 24 25 ... 159

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