Вопрос № 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