使用C++的所有基本类型,您可以简单地查询:

if(varname)

然后将类型转换为 boolean 值以进行评估。有什么方法可以在用户定义的类中复制此功能?我的一个类由整数标识,尽管它具有许多其他成员,并且我希望能够以这种方式检查整数是否设置为NULL。

谢谢。

最佳答案

您可以定义用户定义的转换运算符。这必须是成员函数,例如:

class MyClass {
  operator int() const
  { return your_number; }
  // other fields
};

您还可以实现操作符bool。但是,我会强烈建议反对这样做,因为您的类将在算术表达式中变得可用,从而很快导致困惑。 IOStreams定义了例如到void*的转换。您可以按照测试void*的相同方式测试bool,但是void*没有语言定义的隐式转换。另一种选择是使用所需的语义定义operator!

简而言之:将转换运算符定义为整数类型(包括 boolean 值)是一个非常糟糕的主意。

07-25 23:26
查看更多