Составители:
Рубрика:
40 Глава 3. Классы
В языке С++ конструктор класса имеет такое же имя, что и класс.
Например, у класса X конструктор имеет имя X(), а деструктор имеет
имя ˜X().
Рассмотрим задачу перегрузки операции сложения для комплекс-
ных чисел.
Первый способ
Объявляем бинарную операцию сложения как нестатический член
класса с одним параметром.
сlass complex
{
public:
int real, image;
complex()
{ real=image=0;} // конструктор без параметров
complex(int r, int i)
{ real=r; image=i; } // конструктор с параметрами
complex operator+(complex c)
{ return complex(c.real+real, c.image+image); }
};
int main()
{
complex c1(1,0), c2(0,1), c3;
c3=c1+c2; // эквивалентно c3=c1.operator+(c2)
// или c3=c2.operator+(c1)
printf("re=%d im=%d", c3.real, c3.image);
}
Два конструктора можно объединить в один:
complex(int r=0, int i=0){ real=r; image=i; }
Можно оставить в классе прототип функции operator+, а реали-
зацию этой функции вынести за пределы класса.
40 Глава 3. Классы В языке С++ конструктор класса имеет такое же имя, что и класс. Например, у класса X конструктор имеет имя X(), а деструктор имеет имя ˜X(). Рассмотрим задачу перегрузки операции сложения для комплекс- ных чисел. Первый способ Объявляем бинарную операцию сложения как нестатический член класса с одним параметром. сlass complex { public: int real, image; complex() { real=image=0;} // конструктор без параметров complex(int r, int i) { real=r; image=i; } // конструктор с параметрами complex operator+(complex c) { return complex(c.real+real, c.image+image); } }; int main() { complex c1(1,0), c2(0,1), c3; c3=c1+c2; // эквивалентно c3=c1.operator+(c2) // или c3=c2.operator+(c1) printf("re=%d im=%d", c3.real, c3.image); } Два конструктора можно объединить в один: complex(int r=0, int i=0){ real=r; image=i; } Можно оставить в классе прототип функции operator+, а реали- зацию этой функции вынести за пределы класса.
Страницы
- « первая
- ‹ предыдущая
- …
- 38
- 39
- 40
- 41
- 42
- …
- следующая ›
- последняя »