2015-11-23 2 views
-2
Pareja& operator+ (const Pareja &parametro1, const Pareja &parametro2) { 
    return *(new Pareja(parametro1.a + parametro2.a, parametro1.b + parametro2.b)); 
} 

Я не понимаю, почему мы используем «&», как в Pareja& и «*», как в return *(...Какова роль «&» и «*» при перегрузке оператора?

И когда мы должны использовать его, и когда мы не.

Когда я прочитал о Overloading Operators, эта «тема» дается как известно.

+3

Вы найдете ответ на любом курсе C++. Плюс этот фрагмент кода является дрянным и утечка памяти для целей. – YSC

+0

@YSC Большое спасибо за ваш конструктивный комментарий. –

+0

@YSC: Это не обязательно утечка памяти - хотя для этого требуется достаточная осторожность, чтобы избежать ее утечки памяти. –

ответ

1

Вы хотите работать с объектами, а не с их копиями, поэтому вот почему амперсанды «&». Ключ Const указывает, что вы не будете изменять свои значения. Звездочка '*' разыменовывает указатель на вновь созданный объект, который в этом случае приводит к утечке памяти, как указывал ранее YSC. Невозможно создать новый объект, а затем не хранить его в контейнере/указателе. Вы несете ответственность за свою жизнь.

Смежные вопросы