有问题的代码:
struct PCArea {
PCArea(
int minxx = 0,
int minyy = 0,
int maxxx = 0,
int maxyy = 0
) {}
};
struct NDCVolume {
NDCVolume() {}
operator PCArea() const;
};
// how does this operator work? how to use/read it?
NDCVolume ::operator PCArea() const {
return PCArea(iminx, iminy, imaxx, imaxy);
}
已从代码段中删除了冗余代码。我使用过Visual Studio>查找所有引用但无法发现它的使用位置。对我来说,它看起来像没有指定返回值的成员方法。
这与下面有什么不同?
PCArea NDCVolume::PCArea() const;
答案 0 :(得分:1)
这是转化运营商。
如果是NDCVolume NDCVolume::PCArea() const;
,它只是一个函数,不会使用隐式
如果定义了转换运算符,则可以编写
NDCVolume vol;
PCArea area = vol; //implicit conversion
在第二种情况下(使用常规功能),您必须明确指出:
NDCVolume vol;
PCArea area = vol.PCArea(); //explicit conversion
PCArea area2 = vol; //error, if no conversion operator is defined
答案 1 :(得分:0)
隐式转换运算符以键入PCArea。
PCArea NDCVolume::PCArea() const;
只是功能,不是转换操作符,不能自动使用。