Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > О перегрузке инкремента


Автор: Cardholder 13.3.2004, 12:45
В классе описана ф-ция перегрузки ++

pair& operator ++(pair& P)
{
cout<<"Prefix ++"<<endl;
P.N*=10;
return P;
}


Что означает апрерсанд(знак &) после слова pair в определении ф-ции в 1м и 2м случае?

Автор: mr.DUDA 13.3.2004, 12:53
Цитата
Что означает апрерсанд(знак &) после слова pair в определении ф-ции в 1м и 2м случае?

значит, что аргумент передаётся в функцию по ссылке - это чтобы иметь возможность реально что-то сделать с объектом (не создавая копию конструктором копирования, что имело бы место, если убрать "&").

Автор: Coocky 13.3.2004, 15:13
Ух ты, а классно светит

Автор: mr.DUDA 13.3.2004, 17:24
Совсем забыл: левый амперсанд (в типе возвращаемого значения) указывает на то, что результат функции-оператора имеет ссылочный тип. В теле функции стоит "return P", и всё это значит, что результатом будет значение, адресуемое ссылкой "P". Ссылка в результате нужна, чтобы после выполнения инкремента, над тем же объектом можно было выполнить другие операции, например декремент:
Код
(P++)--


З.Ы.
Coocky, не советую здесь этим злоупотреблять... hehe.gif


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)