有问题的代码:

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;

最佳答案

这是一个转换运算符。

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

关于c++ - 如何读取此运算符的声明和实现?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11575711/

10-10 19:45