在工作中运行“运算符ClassName *”。这是什么意思?

时间:2012-11-27 20:01:31

标签: c++

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

class ClassName;

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

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

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

我的想法是否正确?

1 个答案:

答案 0 :(得分:10)

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

因此;

ClassRef r;
ClassName * p = r;

将利用此过载。