Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 奇异布尔过载_C++ - Fatal编程技术网

C++ 奇异布尔过载

C++ 奇异布尔过载,c++,C++,你能给我解释一下这里的typedef是做什么用的吗 class C { public: ... typedef bool (C::*implementation_defined_bool_type)(bool) const; operator implementation_defined_bool_type() const { return _spi ? &C::isPersistent : 0;

你能给我解释一下这里的typedef是做什么用的吗

class C
{
    public:
        ...

        typedef bool (C::*implementation_defined_bool_type)(bool) const;

        operator implementation_defined_bool_type() const {
            return _spi ? &C::isPersistent : 0;
        }

};
你能给我解释一下
typedef
在这里做什么吗?

typedef
s一个指针,指向
C
类型的常量成员函数,该函数将
bool
作为输入参数,并返回
bool

operator implementation_defined_bool_type() const 
接收类型为
C
的对象,并返回类型为
实现定义的类型

它被称为转换运算符

它的目的是什么?

它实现了“安全布尔惯用法”,目的是在布尔上下文中验证对象。
请注意,使用C++11标准

读得好:

这是一个过时的实现。它没有解释它实际上做了什么,为什么要这样实现,它的目的和全部。
operator implementation_defined_bool_type() const