从第15项中,我注意到以下代码:
class FontHandle { ... };
class Font {
public:
// implicit conversion function
operator FontHandle() const { return f; }
private:
FontHandle f;
};
好像该类
Font
重载了其他类的构造函数,对吗?我们通常会看到+-*/=
重载定义,但是为什么会这样?我们应该在哪些情况下这样做? 最佳答案
这是用户定义的转换运算符。
它允许从Font
到FontHandle
的隐式转换。也就是说,它允许这样的代码:
Font f;
// ...
FontHandle fh = f; // Conversion applied here
如果没有这样的运算符,则上面的代码行将产生“不相关类型之间无法转换”的编译器错误。