使用C++的所有基本类型,您可以简单地查询:
if(varname)
然后将类型转换为 boolean 值以进行评估。有什么方法可以在用户定义的类中复制此功能?我的一个类由整数标识,尽管它具有许多其他成员,并且我希望能够以这种方式检查整数是否设置为NULL。
谢谢。
最佳答案
您可以定义用户定义的转换运算符。这必须是成员函数,例如:
class MyClass {
operator int() const
{ return your_number; }
// other fields
};
您还可以实现操作符bool。但是,我会强烈建议反对这样做,因为您的类将在算术表达式中变得可用,从而很快导致困惑。 IOStreams定义了例如到
void*
的转换。您可以按照测试void*
的相同方式测试bool
,但是void*
没有语言定义的隐式转换。另一种选择是使用所需的语义定义operator!
。简而言之:将转换运算符定义为整数类型(包括 boolean 值)是一个非常糟糕的主意。