C ++: перегрузить функцию конструктора члена с помощью ключевого оператора - PullRequest
0 голосов
/ 07 сентября 2018

В исходном коде Halide я прочитал эту строку кода:

operator halide_type_t() const { return type; }

в определении класса с именем Type, и он содержит член type, который является halide_type_t struct.

Я немного озадачен перегрузкой operator, и как мне использовать новую функцию halide_type_t()?

1 Ответ

0 голосов
/ 07 сентября 2018

Рассмотрим код ниже:

struct number{
    int numerator;
    int denominator;
    operator float() { return numerator*1.0 / denominator }

}
void main(){
    number n;
    n.numerator = 3;
    n.denominator = 4;
    float value = n; // here the user-defined conversion occurs
    std::cout << value; // 0.75
}

В этом случае происходит пользовательское преобразование. Всякий раз, когда объект числа присваивается значение с плавающей запятой, происходит преобразование и возвращается значение. В вашем случае, когда объект класса Type назначен на структуру halide_type_t, то есть

  Type t1;
  halide_type_t t = t1;

значение t1.type назначено для t. Надеюсь, поможет! :)

...