C ++类运算符重载

时间:2011-10-03 14:14:39

标签: c++ 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解决方案感到有些困惑,而且我并不完全了解正在发生的事情,因为它看起来有点不明智。有人可以将它分解成一种可以理解的格式吗?

2 个答案:

答案 0 :(得分:4)

你可以写一个operator bool()。这样就可以将胁迫归咎于bool,使你的声明成为可能。

答案 1 :(得分:2)

你重载operator void*(就像标准库的iostreams一样)或者使用boost的技巧来使用“unspecified_bool_type”typedef(安全bool)。它不会自动反转您的operator!