将POD实现为自定义类类型转换

时间:2013-06-05 03:25:32

标签: c++ overloading

实现从自定义类到POD或其他类型的转换非常简单。它在自定义类本身中实现为以目标类型命名的运算符。像这样,

operator int{ return anInt; }

反过来怎么样?我可以重载例如,int到自定义类类型转换?

2 个答案:

答案 0 :(得分:2)

您可以通过为您的类提供以基本类型作为参数的构造函数来实现不同的方式:

class X { 
public:
   X(int) {}
};

void f(X const &x) { }

int main(){ 
    f(2); // allowed -- will construct an X, then pass it to `f`.
}

请注意,在某些情况下,这可能会导致意外转换 - 通常认为将此类构造函数标记为explicit会更好,以防止它们被使用,除非您明确强制转换。

答案 1 :(得分:1)

使用单个参数构造函数

MyClass(int n) :anInt(n) {}