Полиморфные Вектора - статья

У вас есть другая возможность - найти ваш векторный и другие вмещающие классы через указатели на объекты некого класса:

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? Обычно четкий тип должен в последствие быть восстановлен, чтоб обеспечить правильное внедрение объекта. Для этого необходимо либо в некий форме хранить информацию о типе в самом объекте, либо обеспечить, чтоб во вмещающий класс помещались только объекты данного типа. Последнее Полиморфные Вектора - статья просто достигается при помощи производного класса. Вы сможете, к примеру, сделать вектор указателей на apple:

class apple_vector : public cvector {

public:

apple*& elem(int i)

{ return (apple*&) cvector::elem(i); }

//...

};

используя запись приведения к типу (тип)выражение, чтоб конвертировать common*& (ссылку на указатель на common), которую возвращает cvector::elem, в apple Полиморфные Вектора - статья*&. Такое применение производных классов делает кандидатуру обобщенным классам. Писать его мало сложнее (если не использовать макросы таким макаром, чтоб производные классы практически реализовывали обобщенные классы, но оно имеет то преимущество, что все производные классы вместе употребляют единственную копию функции базисного класса. В случае обобщенных классов, таких, как vector Полиморфные Вектора - статья(type), для каждого нового применяемого типа должна создаваться (при помощи implement()) новенькая копия таких функций. Другой метод, хранение идентификации типа в каждом объекте, приводит нас к стилю программирования, который нередко именуют объекто-основанным либо объектно-ориентированным.


poliklinika-5.html
polikulturnoe-vospitanie.html
polimeri-soderzhashie-6-metiluracil-i-ego-proizvodnie-statya.html