gpt4 book ai didi

C++:重载 "pointer to object"* 运算符

转载 作者:行者123 更新时间:2023-11-30 01:17:09 26 4
gpt4 key购买 nike

我对默认运算符定义(由编译器)产生了一些误解。

我有小类:

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;
}

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

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

谢谢。

最佳答案

obj_p 是一个指针。您没有重载(并且无论如何也不能这样做)指针的取消引用运算符。要调用重载,您需要对实例进行操作:

Q obj;
*obj;

关于C++:重载 "pointer to object"* 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25115135/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com