Алгоритмы и структуры данных на С++. Аксёнова Е.А - 40 стр.

UptoLike

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+, а реали-
зацию этой функции вынести за пределы класса.