Категория
Информатика
Тип
реферат
Страницы
2 стр.
Дата
01.12.2009
Формат файла
.rtf — Rich Text Format (Wordpad)
Архив
20662.zip — 3.91 kb
  • polimorfnye-vektora_20662_1.rtf — 14 Kb
  • Readme_docus.me.txt — 125 Bytes
Рейтинг
10  из 10
Оценок
1
Оцените работу
Хорошо  или  Плохо


Текст работы

Полиморфные Вектора Alena
Alena
Полиморфные Вектора
У вас есть другая возможность
- определить ваш векторный и другие вмещающие классы через указатели на
объекты некоторого класса:
class common
//...;
class vector
common** v;
//...
public:
cvector(int);
common*& elem(int);
common*& operator[](int);
//...
;
Заметьте, что поскольку в таких векторах хранятся указатели, а не сами объекты, объект может быть "в" нескольких таких векторах
одновременно. Это очень полезное свойство подобных вмещающих классов, таких, как вектора, связанные списки, множества и т.д. Кроме того, можно присваивать указатель на производный класс указателю на его базовый класс, поэтому можно использовать приведенный выше cvector для хранения указателей
на объекты всех производных от common классов.
Например :
class apple : public common /*...*/
class orange : public common /*...*/
class apple_vector : public cvector
public:
cvector fruitbowl(100);
//...
apple aa;
orange oo;
//...
fruitbowl[0] = &aa;
fruitbowl[1] = &oo;
Однако, точный тип объекта, вошедшего в такой вмещающий класс, больше компилятору не известен. Например, в предыдущем примере
вы знаете, что элемент вектора является common, но является он apple или orange? Обычно точный тип должен в последствие быть восстановлен, чтобы обеспечить правильное использование объекта. Для этого нужно или в какой-то форме хранить информацию о типе в самом объекте, или обеспечить, чтобы во вмещающий класс помещались только объекты данного типа. Последнее легко достигается с помощью производного класса.



Ваше мнение



CAPTCHA