420_____________________Часть III. Современное программирование на C++
Все эти примеры практически иллюстрируются в листинге 17.4. При вызове каждой их этих функций программа печатает соответствующее сообщение.
1 |
// COPIES.CPP — Демонстрация форм операторов, использующих |
2 |
// конструктор копий и операцию присваивания. |
3 |
#include <iostream.h> |
4 |
#include <fstream.h> |
5 |
ofstream of( "output.dat"); |
6 |
class X |
7 |
( |
8 |
public: |
9 |
X () ; |
10 |
~X () ; |
11 |
X(const X&) ; |
12 |
X& operator=(const X&); |
13 |
operator int(){return num; } |
14 |
private: |
15 |
int num; |
16 |
}; |
17 |
//Конструктор по умолчанию |
18 |
Х::Х() |
19 |
{ |
20 |
of «"конструктор" « endl; |
21 |
num = 5; |
22 |
» |
23 |
// Деструктор |
24 |
X::~Х() |
25 |
{ |
26 |
of « "деструктор" « e,ndl; |
27 |
} |
28 |
// Конструктор копий |
29 |
:Х: :Х( const. X& rhs) |
30 |
{ |
31 |
of « "конструктор копий" « endl; |
32 |
num = rhs.num; |
33 |
} |
34 |
// Операция присваивания |
35 |
X& X::operator=(const X& rhs) |
36 |
( |
37 |
if( this == &rhs) return *this; |
38 |
of « "операция присваивания" « endl; |
39 |
num = rhs.num; |
40 |
return *this; |
41 |
i |
42 |
// Возврат по значению |
43 |
X Foo() |