0 c++ overloading operator-keyword
我需要重载这个运算符(mainMenu 是名为“Menu”的类类型):
if (mainMenu) {
cout << "The mainMenu is valid and usable." << endl;
}
Run Code Online (Sandbox Code Playgroud)
我试过这个,但没有用:
bool operator!(const Menu& lobj);
Run Code Online (Sandbox Code Playgroud)
在这个 if 语句的条件下
if (mainMenu)
Run Code Online (Sandbox Code Playgroud)
!不使用逻辑否定运算符。
相反,您可以编写例如
if ( !!mainMenu )
Run Code Online (Sandbox Code Playgroud)
但是最好声明一个显式转换运算符,如
explicit operator bool() const;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,你可以写
if (mainMenu)
Run Code Online (Sandbox Code Playgroud)
这是一个演示程序,显示了这些运算符之间的区别。
#include <iostream>
struct A
{
bool operator !() const
{
return false;
}
explicit operator bool() const
{
return true;
}
};
int main()
{
if ( !!A() ) std::cout << "Hello\n";
if ( A() ) std::cout << "World!\n";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
程序输出是
Hello
World!
Run Code Online (Sandbox Code Playgroud)