c++ - 在工作中遇到这个 "operator ClassName *"。这是什么意思?

标签 c++

有这段代码的类是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;

将利用这个重载。

关于c++ - 在工作中遇到这个 "operator ClassName *"。这是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13592084/

相关文章:

c++ - 为什么std::is_invocable <std::decay_t <void(int&)>,std::decay_t <int >>::value为假?

c++ - 使用 C++ 从 USB 人机接口(interface)设备转换事件

c++ - 如何修复此错误 : #include <gl/glut. h> "Cannot open source file gl/glut.h"

c++ - 无论如何要命令差异类(差异文件)的静态对象初始化

c++ - 如何通过引用将数组传递给函数模板

c++ - 具有跨多个 DLL/DSO 的静态成员的模板类

c++ - std::ostringstream 到 LPCSTR?

c++ - 从基指针列表循环 (OOD) 调用派生类方法

c++ - 将类对象存储在 char * 缓冲区中并从缓冲区中引用该对象

c++ - 二叉树不会编译: Error 'WinMain@16'