gpt4 book ai didi

c++ - 如何阅读此运算符声明和实现?

转载 作者:太空宇宙 更新时间:2023-11-04 12:07:02 24 4
gpt4 key购买 nike

有问题的代码:

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 > Find All References 但无法发现任何使用它的地方。对我来说,它看起来像是一个没有指定返回值的成员方法。

这和下面有什么不同?

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com