Показать сообщение отдельно

  #9  
Старый 22.08.2009, 22:29
horlyk
Участник форума
Регистрация: 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..
 
Ответить с цитированием