我对默认的运算符定义(由编译器)有些误解。
我有一堂课:
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 *
-是编译器工作还是我以某种方式做错了重载?
谢谢。
obj_p
是一个指针。您尚未使指针的解除引用运算符超载(也无法做到)。要调用重载,您需要对一个实例进行操作:
Q obj;
*obj;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句