C++ 运算符重载的有关问题。可能是低级有关问题,求人解答
C++ 运算符重载的问题。可能是低级问题,求人解答。
class Handle VALUE_OBJ_CLASS_SPEC {
private:
oop* _handle;
protected:
oop obj() const { return _handle == NULL ? (oop)NULL : *_handle; }
oop non_null_obj() const { assert(_handle != NULL, "resolving NULL handle"); return *_handle; }
public:
// Constructors
Handle() { _handle = NULL; }
Handle(oop obj);
#ifndef ASSERT
Handle(Thread* thread, oop obj);
#else
// Don't inline body with assert for current thread
Handle(Thread* thread, oop obj);
#endif // ASSERT
// General access
oop operator () () const { return obj(); }
oop operator -> () const { return non_null_obj(); }
bool operator == (oop o) const { return obj() == o; }
bool operator == (const Handle& h) const { return obj() == h.obj(); }
// Null checks
bool is_null() const { return _handle == NULL; }
bool not_null() const { return _handle != NULL; }