在工作中运行"运算符ClassName*".这是什么意思?

Nin*_*zAI 5 c++

具有此代码的类是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)

将利用这种超载.