перегрузка операторов для манипуляторов

Я думаю, что следующий код можно использовать для создания манипуляторов.

#include<iostream> 
ostream & symbol(ostream & output)
{
  return output << "\tRs";
}

работает нормально. Следующий оператор

  cout << "Total amount: " << 567 << symbol; 

дает результат

 Total amount: 567   Rs

Но я не понял, почему он работает. У меня есть следующая информация о перегрузке операторов в C++.

  1. можно перегружать только существующие операторы. Новые операторы не могут быть созданы. Но символ не является существующим оператором.

  2. В операторе(cout << "Общая сумма :" << 567 << символ;)кажется, что << — это перегруженный оператор, а символ — это переменная/объект. Но я не объявлял символ как переменную/объект.

  3. почему они используют оператор return(return output << "\tRs";)?. Я думаю(вернуть "\tRs";)или(вывод << "\tRs";)должно работать. (Я пробовал, но не работает:))

На самом деле я не знаю, как работает приведенный выше код. Есть ли кто-нибудь, кто объяснит работу вышеуказанной перегрузки оператора?

5
задан Habeeb Perwad 28 March 2012 в 17:43
поделиться