C++ 类的操作符重载 operator A *() const,这个怎么调用

class A {};

class B {
    operator A *() const { return new A(); }
};

请问,怎么通过B类的实例调用“operator A *() const”这个方法?

阅读 2.7k
2 个回答

这个是自定义类型装换,在 class B 的对象需要转换为 class A 的指针(A*)的时候,使用这一函数。

class A{};
 
class B {
public:
    operator A* ()const {
        return new A;
    }
};
 
int main() {
    B z;
    A *pa = z; // 类型转化,由 b 转换为 A*,调用 B::operator A*() const 
    return 0;
}

*运算符作为单目运算符(取实例),放在操作数的左侧,调用时应该这样

B x;

A * t=*x;

这样重载,看起来B的实例就是一个指针,运算符把指针转成一个实例,但这个实例是A的指针,所以B重载了运算符之后,B看起来就像是一个指向A的指针的指针。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题