gpt4 book ai didi

C++ less运算符使用转换运算符

转载 作者:太空狗 更新时间:2023-10-29 23:26:16 26 4
gpt4 key购买 nike

我不明白为什么要使用以下虚拟类:

class Foo {
public:
operator double() const {
return 3.14;
}
};

当我尝试比较实例时:

Foo f1;
Foo f2;

auto res = f1 < f2;

less操作符使用现有的

operator double() const

比较值时。我在哪里可以找到这种行为的规则?

最佳答案

如评论中所述,允许编译器进行 1 次用户定义的转换,就像它在此处所做的那样。它看到它可以将两个对象转换为 doubledouble确实有 operator < ,它就是这样做的。如果您只想在您(程序员)要求时使用您的转换运算符,您可以添加 explicit :

explicit operator double() const {
return 3.14;
}

现在,编译器可能只会在您将其显式转换为此类类型时调用它:

Foo f1;
double d = (double)f1; // conversion operator

关于C++ less运算符使用转换运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43767790/

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