Перегрузка операцій
Для підготовки даної праці були використані матеріали із російського сайту internet. Определяет операцію << члена класу ostream, тому s< «); Return p. s << «(»<< z. real << «, «<< z. imag << «) »; Ostream& operator<<(ostream& p. s, complex z) {. Ostream ostream: operator<<(char* p). Istream& operator>>(char≈); While (*p) buf. sputc (*p++); Istream& operator>>(long&); Istream… Читати ще >
Перегрузка операцій (реферат, курсова, диплом, контрольна)
Перегрузка операций
Настоящий клас ostream визначає операцію <<, щоб зробити зручним висновок кількох об'єктів одним оператором. Давайте подивимося, як і сделано.
Чтобы визначити @, де @ - деяка операція мови З++, кожному за що визначається користувачем типу ви визначаєте функцію безпосередньо з ім'ям operator@, яка отримує параметри відповідного типу. Наприклад:
class ostream {.
//…
ostream operator<<(char*);
};
ostream ostream: operator<<(char* p).
{.
while (*p) buf. sputc (*p++);
return *this;
}.
определяет операцію << члена класу ostream, тому s< «);
а якщо застосувати операцію взяття адреси, ви отримаєте адресу об'єкта, який посилається посилання:
&s1 == &my_out.
Первая очевидна користь від посилань у тому, щоб забезпечити передачу адреси об'єкта, а чи не самого об'єкта, до функцій виведення (в деяких мовами це і називається передачею параметра по засланні):
ostream& operator<<(ostream& p. s, complex z) {.
return p. s << «(«<< z. real << «, «<< z. imag << «) » ;
}.
Достаточно цікаво, що тіло функції залишилося без змін, але коли ви будете здійснювати присвоювання p. s, то ви будете впливати на сам об'єкт, а чи не з його копію. У разі те, що повертається посилання, також підвищує ефективність, оскільки очевидний спосіб реалізації посилання — це покажчик, а передача покажчика набагато дешевше, ніж передача великий структури даних.
Ссылки також істотні визначення потоку введення, оскільки операція введення одержує у ролі операнда зміну для зчитування. Якби посилання не використовувалися, то користувач був би явно передавати покажчики у функції введення.
class istream {.
//…
int state;
public:
istream& operator>>(char≈);
istream& operator>>(char*);
istream& operator>>(int&);
istream& operator>>(long&);
//…
};
Заметьте, що з читання long і int використовують різні функції, тоді як їх друку була потрібна лише одне. Це дуже зазвичай, і причина у цьому, що int то, можливо перетворено на long за стандартними правилам неявного перетворення, позбавляючи в такий спосіб програміста від занепокоєння по приводу написання обох функцій введення.
Список литературы
Для підготовки даної праці були використані матеріали із російського сайту internet.