Программирование >>  Программирование на языке c++ 

1 ... 56 57 58 [ 59 ] 60 61 62 ... 159


~С() { 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(); используется

для копирования



1 ... 56 57 58 [ 59 ] 60 61 62 ... 159

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика