在工作中遇到这个"operator ClassName *".这是什么意思?



具有此代码的类是 ClassName 指针的引用类,即:

class ClassName;
class ClassRef
{
    ClassName* m_class;
    ...
    operator ClassName *() const { return m_class; }
...

我假设这用于指针有效性检查,例如:

ClassRef ref(new ClassName())
if (ref) { bla bla bla }

我的想法正确吗?

这是转换运算符的重载。每当需要将ClassRef对象转换为ClassName指针类型时,都会调用此运算符。

所以;

ClassRef r;
ClassName * p = r;

将利用此过载。

最新更新