C ++:使用关键字运算符重载成员的构造函数

时间:2018-09-07 02:17:28

标签: c++ operator-overloading overloading

在Halide的源代码中,我阅读了以下代码行:

operator halide_type_t() const { return type; }

在名为Type的类的定义中,它包含一个成员type,它是halide_type_t结构。

我对operator重载有些困惑,应该如何使用新功能halide_type_t()

1 个答案:

答案 0 :(得分:1)

考虑以下代码:

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的对象分配给struct halide_type_t时, 即

  Type t1;
  halide_type_t t = t1;

将t1.type的值分配给t。 希望能帮助到你! :)