[英]C++ class operator overloading
可以为一个类重载not运算符:
class TestA
{
public:
bool Test;
const bool operator!(){return !Test;}
};
以便...
TestA A; A.Test = false;
if(!TestA){ //etc }
...能行得通。 但是,以下如何工作?
if(TestA) //Does this have to be overloaded too, or is it the not operator inverted?
阅读完之后,我将补充一点,我对所使用的typedef解决方案感到有些困惑,并且我不太了解正在发生的事情,因为它似乎有些模糊。 有人可以将其分解为我可以理解的格式吗?
您可以编写一个operator bool()
。 这样可以避免强制转换,使上述陈述成为可能。
您可以重载operator void*
(例如标准库的iostream),或者使用boost的技巧来使用typedef
(未定义的布尔值)(安全布尔)。 它不会自动反转您的operator!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.