Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 50
от 28.02.2005, 17:00

Администратор:Калашников О.А.
В номере:Вопросов: 1, Ответов: 2


Вопрос № 17344: Здравствуйте! 1) Вопрос такой: если перегружается оператор вывода ostream& operator<<(ostream& output,Array<T>& theArray) { for (int i=0;i<theArray.Getsize();i++) output<<"["<<i<&l...

Вопрос № 17344
Здравствуйте!
1) Вопрос такой:
если перегружается оператор вывода
ostream& operator<<(ostream& output,Array<T>& theArray)
{
for (int i=0;i<theArray.Getsize();i++)
output<<"["<<i<<"]"<<theArray[i]<<endl;
return output;
}
и далее следует вызов
cout<<theArray;
то этот вызов по идее означает следующее
cout.operator<<(theArray); //один параметр theArray
Верно?
Тогда почему в перегрузке оператора 2 параметра (output и theArray)?
2) если есть шаблон
template <class T>
class Array
{
.....
}
и далее в программе написано
template <class T>
void Somefunction(Array<T>&);
то принадлежит ли эта функция шаблону? Просто я встретился с понятием
"функция шаблона" (template function). Но функции шаблонов определяются
так:
template <class T>
void Array<T>::MyFunction(int var)
{
...
}
Заранее спасибо.
Отправлен: 22.02.2005, 17:06
Вопрос задал: Бейзель Александр Юрьевич (статус: Посетитель)
Всего ответов отправлено: 2

Отвечает: vitya
Здравствуйте, Бейзель Александр Юрьевич!
1. нет не правильно. вызывается глобальная функция, как и написано в ее декларации. с первым параметром потоком и вторым что выводить в поток
2. функция так же свободная шаблонная функция. А то что вы имеете в виду это функция шаблонного класса. Которая в свою очередь так же может быть шаблонной :)
Ответ отправил: vitya (статус: Профессор)
Отправлен: 22.02.2005, 17:14

Отвечает: Voituk Alexander
Здравствуйте, Бейзель Александр Юрьевич!
по первому вопросу - поскольку оператор вывода << является бинарным, то в нем и два параметра. Это сделано для того, чтобы ты мог написать cout << theArray << "Xaxa" << 5;
А по поводу второго вопроса - то это разные вещи. Ты можешь создать класс как шаблон, и тогда это типа обычный класс, с конструктором, деструктором и своими функциями. А можно создать просто функцию-шаблон. Она не относится ни к какому классу. Просто себе функция.
Пример - в Helpe посмотри функцию Max и Min. Это типичные функции шаблоны. А то, что они определяются с ключевым словом <class T>, то это просто такой принятый синтаксис С++.
Ответ отправил: Voituk Alexander (статус: 2-ой класс)
Отправлен: 23.02.2005, 12:48


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.cplus
Отписаться

В избранное