|
Программирование >> Расширенная версия языка c++
264 , Самоучитель С++ 1. В незавершенной программе имеется класс strtype. Для вхвода строки на экран создайте пользовательскую функцию вывода: ftinclude<iostream> ttinclude <cstring> - tinclude <cstdlib> using namespace std; class strtype { char *p; int len; public: strtype (char *ptr) ; ~strtype №lete [] p; } friend ostream &operator (ostream (istreani, strtype Sofc); strtype::strtype(char *ptr) { len = strlen(ptr) + 1; -i . - p = new char [len] ; 1£C.!P) i cou Сшибка в1деления памя \п ; exit(1); strcpy ptr) I ; 1.1. Здесь добавьте собственную функцию вывода int () strtype si ( Это оверка ) Мне нравится С++ ); coat з1 \п з2; return 0; 2. Замените в следующей программе функцию show() пользовательской функцией вывода: tinclude <iostream> using std; class planet { protected: double distance; расстояние в милях от Солнца 8.6. Пользовательские функции ввода Точно так же, как мы перегружали оператор вывода <<, можно перегрузить и оператор ввода >>. В С++ оператор ввода >> иногда называют оператором извлечения (extraction operator), а функцию, перегружающую этот оператор, - функцией извлечения (extractor). Смысл этих терминов в том, что при вводе информации мы извлекаем данные из потока. Во избежание путаницы мы будем называть функцию извлечения пользовательской функцией ввода. Здесь показана основная форма пользовательской функции ввода: istream 6operator (istream fistream, имя класса о&ьвкт) { тел ской функции ввода int revolve; полный оборот в днях public: planet(double d, int r) { distance d; revolve = :; ) class earth: public planet { double erence; окружность орбиты . / public: earth(double d, in anet (d, r) ( ( : circumference = 2 * distance * 3.1416; м. r . . i -i i I ; * /*Перепишите функции () так, чтобы информации далась с помощью пользовательской функции вывода */ void show О { cout Расстояние от Солнца: distance \п; cout Оборот вокруг Солнца: revolve < \п\- > cout Окружноств орбиты: circumference \п; earth cout ob; return 0; 3. Вспомните, почему пользовательская функция вывода не может быть функцией-членом. Примёры 1. В этой программе к классу coord добавлена пользовательская функция ввода: Добавление мужественной функции ввода для объектов типа coord ♦include <io3tream> using namespace std; class coord { int X, у; public: coord(} { x = 0; у 0; } coord(int i, int j) { x = i; у = j; } friend ostream Soperator (ostream Sstream, coord ob) ; friend istream £operator (istream Sstream, coord sob); }; [ ostream ator (ostream sstream, coord ob) ( strea< ob. ob.y -Nn ; return stream; . ) istream ( istream sstream, coord &ob) ..- { ... ; cout Введите координаты: ; stream ob.x > ob.y; : . , . l.....- return stream; . ,.>-:. . ,. . int main 0 y.,H(-- v*\ coord a(l, I: , b(10, 23) ; cou< a b; . . i . - return stream; Пользовательские функции ввода возвращают ссылку на пото еаш, который является потоком ввода. Первый параметр тоже явжется ссылкой на поток ввода. Второй параметр - это ссылка на объект, получающий вводимую информацию. Так же, как и пользовательская кция вывода, пользовательская функция ввода не может быть функцией-членом. Хотя внутри такой функции может быть выполнена любая операция, лучше ограничить ее работу вводом информации.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |