C++对象到bool值的转换 | 您所在的位置:网站首页 › object转化成boolean › C++对象到bool值的转换 |
问题
最近在使用pugixml,在阅读源码自带的例程时(docs/samples/load_error_handling.cpp),发现有段代码比较迷惑, 发现倒数第二条语句的注释:Cast to bool operator,意思是转换为bool操作符。再看下这个函数的定义,返回的是个bool值, PUGI__FN xml_parse_result::operator bool() const { return status == status_ok; }应该就是这里起作用的,当处于if的条件判断中时,对象会转换为bool值。于是查阅了《C++ primer 5th》,发现14.9节 重载、类型转换和运算符讲到了这点,如下, 类型转换运算符(conversion operator)是类的一种特殊成员函数,它负责将一个类类型的值转换成其他类型。类型转换函数的一般形式如下所示: operator type() const; 其中type表示某种类型。类型转换运算符可以面向任意类型(除了void之外)进行定义,只要该类型能作为函数的返回类型。因此,我们不允许转换成数组或者函数类型,但允许转换成指针(包括数组指针及函数指针)或者引用类型。 一个类型转换函数必须是类的成员函数;它不能声明返回类型,形参列表也必须为空。类型转换函数通常应该是const。 由于之前看书看到操作符重载时只关注了加减乘除,函数调用符等,没有在意这个,所以出现了迷惑,看来还需要加深学习。 举个栗子这里再举个简单的例子来佐证这一点, #include using namespace std; class TestClass { public: TestClass() : status(1) {} virtual ~TestClass() {} int status; // 如果status等于1就返回true,否则返回false operator bool() const { return status == 1; } }; int main() { TestClass ss; ss.status = 1; if (ss) { cout |
CopyRight 2018-2019 实验室设备网 版权所有 |