gpt4 book ai didi

c++ - C++:如何避免不必要的比较,因为隐式转换为 bool

转载 作者:行者123 更新时间:2023-12-01 14:57:14 24 4
gpt4 key购买 nike

我有一个这样的课:

#include <stdio.h>


class A {
public:
operator bool() const { return m_value != 0; }
int m_value {0};
};


int main() {
A a = A();
a.m_value = 1;
A b = A();
b.m_value = 2;
if (a == b) {
printf("Wrong!\n");
}
}
我忘了覆盖 A的比较运算符。但是由于运算符bool,该代码甚至在没有警告的情况下进行编译,都会导致不必要的比较。
有没有一种方法可以自动检测这种行为?就像一个编译标志。

最佳答案

这正是explicit specifier的用途:

   explicit operator bool() const { return m_value != 0; }
// ^^^^^^^^
现在,从 Abool的隐式转换将是硬编译器错误。
这是 demo

关于c++ - C++:如何避免不必要的比较,因为隐式转换为 bool ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63157873/

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