具有此代码的类是ClassName指针的引用类,即:
class ClassName;
class ClassRef
{
ClassName* m_class;
...
operator ClassName *() const { return m_class; }
...
Run Code Online (Sandbox Code Playgroud)
我假设这用于指针有效性检查,例如:
ClassRef ref(new ClassName())
if (ref) { bla bla bla }
Run Code Online (Sandbox Code Playgroud)
我的想法是否正确?
eno*_*ram 10
这是转换运算符的重载.每当ClassRef需要将对象转换为ClassName指针类型时,都会调用此运算符.
所以;
ClassRef r;
ClassName * p = r;
Run Code Online (Sandbox Code Playgroud)
将利用这种超载.