Презентация на тему Лекция 16. Введение в ООП. Часть 7

Презентация на тему Лекция 16. Введение в ООП. Часть 7, предмет презентации: Разное. Этот материал содержит 15 слайдов. Красочные слайды и илюстрации помогут Вам заинтересовать свою аудиторию. Для просмотра воспользуйтесь проигрывателем, если материал оказался полезным для Вас - поделитесь им с друзьями с помощью социальных кнопок и добавьте наш сайт презентаций ThePresentation.ru в закладки!

Слайды и текст этой презентации

Слайд 1
Текст слайда:

Лекция 16. Введение в ООП. Часть 7

Красс Александр
Alexander.Krass@gmail.com


СПбГУ ИТМО, 2008


Слайд 2
Текст слайда:

Темы

Конструкторы и деструкторы при наследовании


Слайд 3
Текст слайда:

Конструкторы при наследовании

class A
{
public:
A() { cout << "A()\n"; }
};

class B : public A
{
public:
B() { cout << "B()\n"; }
};

void main()
{
A *a = new B; // Что мы увидим на экране?
}


Слайд 4
Текст слайда:

Конструкторы при наследовании

class A
{
public:
A() { cout << "A()\n"; }
};

class B : public A
{
public:
B() { cout << "B()\n"; }
};

void main()
{
A *a = new B; // A()
} // B()


Слайд 5
Текст слайда:

Конструкторы при наследовании

Множественное наследование – это зло!
Но это не касается наследования интерфейсов.


Слайд 6
Текст слайда:

Конструкторы при наследовании

Пример интерфейса:
class A
{
public:
virtual void foo() = 0;
virtual void boo() = 0;
}


Слайд 7
Текст слайда:

Конструкторы при наследовании

Пример множественного наследования:
class A {...};
class B {...};

class C : public A, public B
{
...
};


Слайд 8
Текст слайда:

Деструкторы при наследовании

class A
{
int *i;
public:
A() { i = new int(5); }
~A()
{
cout <<
"~A() => delete i\n";
delete i;
}
};

class B : public A
{
int *j;
public:
B() { j = new int(7); }
~B()
{
cout <<
"~B() => delete j\n";
delete j;
}
};

void main()
{
A *a = new B; // Что мы
delete a; // увидим?
}


Слайд 9
Текст слайда:

Деструкторы при наследовании

class A
{
int *i;
public:
A() { i = new int(5); }
~A()
{
cout <<
"~A() => delete i\n";
delete i;
}
};

class B : public A
{
int *j;
public:
B() { j = new int(7); }
~B()
{
cout <<
"~B() => delete j\n";
delete j;
}
};

void main()
{
A *a = new B; // ~A() => delete a; // delete i
} // Деструктор B не вызовется!


Слайд 10
Текст слайда:

Деструкторы при наследовании

class A
{
int *i;
public:
A() { i = new int(5); }
virtual ~A()
{
cout <<
"~A() => delete i\n";
delete i;
}
};

class B : public A
{
int *j;
public:
B() { j = new int(7); }
virtual ~B()
{
cout <<
"~B() => delete j\n";
delete j;
}
};

void main()
{
A *a = new B; // ~B() => delete a; // delete j
} // ~A() => delete i


Слайд 11
Текст слайда:

Для закрепления материала

class A
{
int *i;
public:
A() { i = new int(5); }
virtual void foo()
{ cout << "A::foo()\n"; }
virtual ~A()
{
delete i;
foo();
}
};

class B : public A
{
int *j;
public:
B() { j = new int(7); }
virtual void foo()
{ cout << "B::foo()\n"; }
virtual ~B()
{
delete j;
foo();
}
};

void main() // Что мы увидим
{ // на экране?
A *a = new B;
delete a;
}


Слайд 12
Текст слайда:

Для закрепления материала

class A
{
int *i;
public:
A() { i = new int(5); }
virtual void foo()
{ cout << "A::foo()\n"; }
virtual ~A()
{
delete i;
foo();
}
};

class B : public A
{
int *j;
public:
B() { j = new int(7); }
virtual void foo()
{ cout << "B::foo()\n"; }
virtual ~B()
{
delete j;
foo();
}
};

void main() // B::foo()
{ // A::foo()
A *a = new B;
delete a;
}


Слайд 13
Текст слайда:

Для закрепления материала

class A
{
int *i;

public:
A()
{ i = new int(5); foo(); }

virtual void foo()
{ cout << "A::foo()\n"; }
};

class B : public A
{
int *j;

public:
B()
{ j = new int(7); foo(); }

virtual void foo()
{ cout << “B::foo()\n"; }
};

void main() // Что мы увидим
{ // на экране?
A *a = new B;
delete a;
}


Слайд 14
Текст слайда:

Для закрепления материала

class A
{
int *i;

public:
A()
{ i = new int(5); foo(); }

virtual void foo()
{ cout << "A::foo()\n"; }
};

class B : public A
{
int *j;

public:
B()
{ j = new int(7); foo(); }

virtual void foo()
{ cout << “B::foo()\n"; }
};

void main() // A::foo()
{ // B::foo()
A *a = new B;
delete a;
}


Слайд 15
Текст слайда:

Спасибо за внимание

Вопросы?


Обратная связь

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика