“&”和“*”在运算符重载中的作用是什么?
What is the role of "&" and "*" on operator overloading?
Pareja& operator+ (const Pareja ¶metro1, const Pareja ¶metro2) {
return *(new Pareja(parametro1.a + parametro2.a, parametro1.b + parametro2.b));
}
我不明白为什么我们在 Pareja&
中使用“&”,在 return *(...
中使用“*”
以及什么时候我们必须使用它,什么时候不需要。
当我读到重载运算符时,这个 "topic" 是众所周知的。
您想对对象进行操作,而不是对它们的副本进行操作,所以这就是为什么这里有“&”符号的原因。 Const 关键字表示您不会修改它们的值。星号“*”取消引用指向新创建对象的指针,在这种情况下会导致内存泄漏,如 YSC 之前所说。
不允许创建一个新对象,然后不将其存储在任何 container/pointer 中。
你要为他们的一生负责。
Pareja& operator+ (const Pareja ¶metro1, const Pareja ¶metro2) {
return *(new Pareja(parametro1.a + parametro2.a, parametro1.b + parametro2.b));
}
我不明白为什么我们在 Pareja&
中使用“&”,在 return *(...
以及什么时候我们必须使用它,什么时候不需要。
当我读到重载运算符时,这个 "topic" 是众所周知的。
您想对对象进行操作,而不是对它们的副本进行操作,所以这就是为什么这里有“&”符号的原因。 Const 关键字表示您不会修改它们的值。星号“*”取消引用指向新创建对象的指针,在这种情况下会导致内存泄漏,如 YSC 之前所说。 不允许创建一个新对象,然后不将其存储在任何 container/pointer 中。 你要为他们的一生负责。