webkit的OwnPtr的bool转换

    webkit有一个模板类OwnPtr。如何理解以下代码呢?

PassOwnPtr<Student> student; if (student) { ...... } 

 

如何理解if (student)这行代码呢?按理说student是一个对象,该写法,应该编译出错才对。

调试时,会发现,它进入了PassOwnPtr的函数:

// This conversion operator allows implicit conversion to bool but not to other integer types. typedef PtrType PassOwnPtr::*UnspecifiedBoolType; operator UnspecifiedBoolType() const { return m_ptr ? &PassOwnPtr::m_ptr : 0; } 

这里的意思就是把if (student)的操作进行了隐式的bool类型转换,若m_ptr已经被设定了,则返回起指向的地址;否则,返回0。

比如:若未设定student指向的类Student对象时,if (student)返回false;所student被指定了(student.set(new Student())),则if (student)返回true。

 

 

这里先提一下,应该说还没有完全把问题解析清楚,等后续理解清晰了,再补上。

你可能感兴趣的:(webkit的OwnPtr的bool转换)