
22.08.2009, 22:29
|
|
Участник форума
Регистрация: 02.12.2007
Сообщений: 132
С нами:
9705420
Репутация:
21
|
|
Объясните плз принцип перегрузки оператора [] и совместное использование его с оператором = , а то никак догнать не могу как он работает...
Код:
class Animal
{
public:
Animal() {}
Animal(int a): age(a) { }
~Animal() { };
int Get() { return age; }
private:
int age;
};
template <class T>
class Array
{
public:
Array() { size = 10; pType = new T[size]; for(int i = 0; i < size; i++) { pType[i] = 0; } }
Array(const Array& rhs);
~Array() { delete [] pType; }
int GetSize() {return size;}
Array& operator = (const Array& rhs);
T& operator [] (int offset) { return pType[offset]; }
private:
T* pType;
int size;
};
template<class T>
Array<T>& Array<T>::operator =(const Array &rhs)
{
if(this == &rhs)
return this;
delete [] pType;
pType = new T[rhs.GetSize()];
for( int i = 0; i < rhs.GetSize(); i++)
pType[i] = rhs[i];
return *this;
}
void main()
{
Array<int> arr;
Array<Animal> zoo;
Animal* pAnimal;
for(int i = 0; i < 10; i++)
{
arr[i] = i*3;// !Начиная с этого места!
pAnimal = new Animal(i*2);
zoo[i] = *pAnimal;
}
}
Что вызывается первым, а что вторым(с метки в коде)
и какая цепочка следует?
Последний раз редактировалось horlyk; 22.08.2009 в 22:32..
|
|
|