|
Программирование >> Программирование на языке c++
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
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |