Перезавантаження cout і cin

В далі приведеній програмі 26.14 оператори видобування і вставки для класу Distance перезавантажені для роботи з cout та cin.

#include<iostream>

#include<conio>

using namespace std;

class Distance

{private:

int feet;

float inches;

public:

Distance():feet(0),inches(0.0)

{ }

Distance(int ft,float in):feet(ft),inches(in)

{ }

friend istream& operator>>(istream& s,Distance& d);

friend ostream& operator<<(ostream& s,Distance& d);

};

//////

istream& operator>>(istream& s,Distance& d)

{ cout<<”\nVvedit futy: “;s>>d.feet;

cout<<”\nVvedit dujmy: “;s>>d.inches;

return s;

};

////////////

ostream& operator<<(ostream& s,Distance& d)

{s<<d.feet<<”\’-“<<d.inches<<’\”’;

return s;

}

/////////////

int main()

{ Distance dist1,dist2;

Distance dist3(11,6.25);

cout<<”\nVvedit 2 znachenna vidstanej:”;

cin>>dist1>>dist2;

cout<<”\ndist1=”<<dist1<<”\ndist2=”<<dist2;

cout<<”\ndist3=”<<dist3<<endl;

getch();

return 0;

}

 

Програма 26.14

Програма запитує в користувача два значення відстаней (типу Distance), виводить їх, а також виводить значення, які були ініціалізовані в програмі. Зверніть увагу, як зручно і природно можна працювати з об’єктами типу Distance – цілком так само, як зі стандартними типами.

cin>>dist1>>dist2;

cout<<”\ndist1=”<<dist1<<”\ndist2=”<<dist2;

Оператори видобування і вставки перезавантажуються одинаковими способами. Вони повертають за посиланням об’єкт istream (>>) чи ostream (<<). Значення, що повертаються, можуть організовуватися в ланцюжки. Оператори мають по два аргументи, обидва передаються за посиланням. Перший аргумент >> - об’єкт класу istream (наприклад, cin). Відповдно, для << першим аргументом повинен бути об’єкт класу ostream (наприклад, cout). Другий аргумент - об’єкт класу, для якого здійснюється ввід/вивід (в даному прикладі це клас Distance). Оператор >> бере вхідні дані з потоку, вказаного в першому аргументі, і переносить їх у компонентні дані об’єкту, вказаного у другому. За аналогією, оператор << бере дані з об’єкту, вказаного у другому аргументі, і посилає їх в потік, що відповідає значенню першого аргумента.

Функції operator <<() та operator>>() повинні бути дружніми по відношенню до класу Distance, оскільки об’єкти istream та ostream знаходяться зліва від знаку операції.

Звичайно, для будь-яких інших класів можна перезавантажувати оператори вставки та видобування таким самим способом.

 

 








Дата добавления: 2015-08-26; просмотров: 538;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.