C ++:重载“对象指针” *运算符

基里尔·季莫菲耶夫

我对默认的运算符定义(由编译器)有些误解。

我有一堂课:

class Q
{
public:
    Q() {};
    Q(int i) { x = i; };
    ~Q() {};
    void print() { cout << x << endl; };
    Q& operator * ()
    {
        cout << "operator *\n";
        return *this;
    };
    const Q& operator * () const
    {
        cout << "operator *\n";
        return *this;
    };
private:
    int x;
};

我正在做这件事:

int main()
{
    Q* obj_p = new Q(1);
    Q obj = *obj_p;
    obj.print();
    return 0;
}

我希望看到operator *,之前1但是我只看到print()方法结果。

这是什么意思?我不需要重载operator *-是编译器工作还是我以某种方式做错了重载?

谢谢。

juanchopanza

obj_p是一个指针。您尚未使指针的解除引用运算符超载(也无法做到)。要调用重载,您需要对一个实例进行操作:

Q obj;
*obj;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章