Введение в программирование

Указатель на объект класса


class A // Объявление базового класса { public: virtual void VirtMetod1(); // Виртуальный метод void Metod2(); // Не виртуальный метод }; void A::VirtMetod() { cout << "Вызван A::VirtMetod1\n";}

void A::Metod2() { cout << "Вызван A::Metod2\n"; }

class B : public A // Объявление производного класса {public: void VirtMetod1(); // Виртуальный метод void Metod2(); // Не виртуальный метод }; void B::VirtMetod1() { cout << "B::VirtMetod1\n";} void B::Metod2() { cout << "B::Metod2\n"; } void main() { B aB; // Объект класса B B *pB = &aB; // Указатель на объект класса B A *pA = &aB; // Указатель на объект класса A pA->VirtMetod1(); // Вызов метода VirtMetod класса B pB->VirtMetod1(); // Вызов метода VirtMetod класса B pA->Metod2(); // Вызов метода Metod2 класса A pB->Metod2(); // Вызов метода Metod2 класса B }

Пример 12.1. Вызов виртуальных методов
Закрыть окно





class A // Объявление базового класса

{ public:

virtual void VirtMetod1(); // Виртуальный метод

void Metod2(); // Не виртуальный метод

};

void A::VirtMetod() { cout << "Вызван A::VirtMetod1\n";}



void A::Metod2() { cout << "Вызван A::Metod2\n"; }

class B : public A // Объявление производного класса

{public:

void VirtMetod1(); // Виртуальный метод

void Metod2(); // Не виртуальный метод

};

void B::VirtMetod1() { cout << "B::VirtMetod1\n";}

void B::Metod2() { cout << "B::Metod2\n"; }

void main() {

B aB; // Объект класса B

B *pB = &aB; // Указатель на объект класса B

A *pA = &aB; // Указатель на объект класса A

pA->VirtMetod1(); // Вызов метода VirtMetod класса B

pB->VirtMetod1(); // Вызов метода VirtMetod класса B

pA->Metod2(); // Вызов метода Metod2 класса A

pB->Metod2(); // Вызов метода Metod2 класса B

}


Содержание раздела