2

你能给我解释一下这里的 typedef 是做什么的以及目的是什么吗?

class C
{
    public:
        ...

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

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

};
4

1 回答 1

5

你能解释一下这里在typedef做什么吗?

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

typedefsa指向a 类型的 const 成员函数的指针C,它接受 abool作为输入参数并返回 a bool

尽管,

operator implementation_defined_bool_type() const 

接受一个类型的对象C并返回一个类型implementation_defined_bool_type
它被称为转换运算符

它的目的是什么?

它实现了“Safe Bool Idiom”,旨在验证布尔上下文中的对象。
请注意,Safe Bool Idiom在 C++11 标准中已过时。

好读:
安全布尔成语

于 2012-06-19T10:20:43.277 回答