|
Программирование >> Программирование на языке c++
~С() { cout C DES\n ; } деструктор void main(void) { А*а[2]; а[0] = new В; а[1] = new С; delete а[0]; delete а[1]; Результаты выполнения этой программы представятся в виде: A CON B CON A CON B CON C CON A DES A DES Bo втором примере объявляется виртуальный деструктор. #include <iostream.h> struct A { A() { cout A CON\n ; } конструктор virtual ~A() { cout A DES\n ; } виртуальный деструктор struct В: public A { B{) { cout B CON\n ; } конструктор ~B() { cout B DES\n ; } виртуальный деструктор struct С: public В { C() { cout C CON\n ; } конструктор ~C() { cout C DES\n ; } виртуальный деструктор void main(void) { А*а[2]; а[0] = new В; а[1] = new С; delete а[0]; delete а[1]; Сравните приведенные ниже результаты выполнения этой программы с результатами выполнения предыдущей программы: A CON B CON A CON B CON C CON B DES A DES C DES B DES A DES Третий пример показывает использование конструктора без аргументов. #include <iostream.h> struct А { А() { cout A CON\n ; } virtual ~A{) { cout A DES\n ; } virtual A* new cp() { return new A; } struct B: public A { B() { cout B CON\n ; } ~B() { cout B DES\n ; } A* new cp() { return new B; } void f(A* p1 1,A* p2 1) в теле этой функции правильно строятся объекты базового или производного типа в зависимости от значений указателей, передаваемых в виде параметров { А* p1 2=p1 1->new cp(); А* p2 2=p2 1->new cp(); выполнение каких-то действий с объектами *р1 2 и *р2 2 delete р2 2; delete р1 2; } удаление объектов, для которых память была выделена динамически с помощью операторов new void main(void) { А а; построение объекта а базового класса В Ь; построение объекта b производного класса f(&a,&b); вызов функции f, которой передаются указа- тели на объекты базового и производного типов Результаты выполнения программы представятся в виде: A CON A CON B CON A CON A CON B CON B DES A DES A DES B DES A DES A DES Четвертый пример демонстрирует использование псевдовиртуального конструктора для копирования без ар-, гументов. #include <iostream.h> struct А { А() { cout A CON\n ; } virtual ~A() { cout A DES\n ; } void copy(A* new A) { *this=*new A; } virtual A* copy constructor(); используется для копирования
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |