Рубрики

Продвинутый C ++ | Операторы преобразования

В C ++ программист абстрагирует объекты реального мира, используя классы в качестве конкретных типов. Иногда требуется неявно преобразовать один конкретный тип в другой конкретный тип или примитивный тип. Операторы преобразования играют умную роль в таких ситуациях.

Например, рассмотрим следующий класс

#include <iostream>
#include <cmath>

  

using namespace std;

  

class Complex

{

private:

    double real;

    double imag;

  

public:

    // Конструктор по умолчанию

    Complex(double r = 0.0, double i = 0.0) : real(r), imag(i)

    {}

  

    // величина: обычный стиль функции

    double mag()

    {

        return getMag();

    }

  

    // величина: оператор преобразования

    operator double ()

    {

        return getMag();

    }

  

private:

    // помощник класса для получения величины

    double getMag()

    {

        return sqrt(real * real + imag * imag);

    }

};

  

int main()

{

    // Сложный объект

    Complex com(3.0, 4.0);

  

    // печатная величина

    cout << com.mag() << endl;

    // то же самое можно сделать так

    cout << com << endl;

}

Мы печатаем величину сложного объекта двумя разными способами.

Рекомендуемые посты:

Продвинутый C ++ | Операторы преобразования

0.00 (0%) 0 votes