繁体   English   中英

C ++类运算符重载

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM