逻辑非: operator!#
内置的 operator! 适用于在某些语境下, 将类型转换为 bool.
如果用户自定义类型需要用于这些语境, 只需要提供类型转换 operator bool 即可, 而无需重载 operator!:
1class Widget {
2 public:
3 // Widget -> bool 的转换函数
4 // -> true : value_ == 5
5 // -> false: value_ != 5
6 explicit operator bool() {
7 return value_ == 5;
8 }
9
10 private:
11 int value_;
12};