Виртуальные методы.
Пр.2.6
Статические методы.
Иногда необходимо, чтобы некоторые данные-члены класса были одинаковыми (разделяемыми) для всех экземпляров класса. Такие члены класса называются статическим и объявляются с применением модификатора static.
class My{//
static int count;
public:
static int getCount(){return count;}
};
int My::count = 0;//статические данные объявляются вне класса
Опр. Статическими называют методы адреса которых связываются с объектами во время компиляции программы и не изменяются до завершения работы программы.
class tlocation {
int x, y;
void Init(int InitX, int InitY);
}
class tPoint {
unsigned char color;
void Init(int InitX, int InitY);
void Move(int NewX, int NewY);
void Hide();
void Draw();
}
class tEllipse : tPoint {
unsigned char Rx, Ry;
void Init( … );
void Hide();
void Draw;
}
Ple
Move адр. tPoint.Move
tPoint.Move;
tPoint.Hide;
{адреса ячеек}
tPoint.Draw;
После выполнения команды ple.Move
Возникает задача как сделать метод Move общим, но при этом, Чтобы всё работало правильно, то есть чтобы двигалась фигура, соответствующая объекту, вызывающего метод Move. Для её решения требуются методы, которые связываются с объектами не статически, то есть в процессе компиляции, а динамически, то есть в процессе выполнения программы.
Опр. Ранним связыванием называют процесс статического связывания метода с объектами
Поздним связыванием называют процесс динамического связывания метода с объектами.
Позднее связывание принципиально новый механизм, который обеспечивает полиморфизм, то есть разные способы поведения для разных объектов, но однородны в смысле наследования.
Полиморфизм – множественность форм – один и тот же метод может принимать различные формы.