Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Наследование и виртуальные методы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Поиск и замена поля структуры в файле http://www.cyberforum.ru/cpp-beginners/thread1207981.html
Всем привет, возникла проблема с заменой определённой строки в файле. Задание состоит в том, что бы найти нужное поле в файле структуры и заменить его на новое, код вроде работает, но создаёт копии в...
C++ Реализация алгоритма Фибоначчи рекурсивным методом Пользователь вводит два числа сам и программа должна рассчитать остальные числа до определенной точки. У меня есть программа для чисел Фибоначчи, а переделать её для алгоритма у меня не получается.... http://www.cyberforum.ru/cpp-beginners/thread1207965.html
Отсортировать массив структур (фамилии студентов и размер их стипендии) по размеру стипендии C++
Помогите с задачей Условие:"заданный тип структур что содержатся следующие сведения какие фамилии студентов и размер их стипендии.Необходино посортировать по размеру стипендии" вот мои наработки по...
Предусмотреть возможность выбора ввода данных: с клавиатуры или из файла C++
В общем дали экзаменационную работу на дом. А программирование изучаем по принципу- вот вам гугл... В общем суть программы: В программе предусмотреть возможность выбора ввода данных: с клавиатуры...
C++ Не могу запустить программу http://www.cyberforum.ru/cpp-beginners/thread1207929.html
Делаю лабораторную работу, есть программа которая тупо скопирована с методички #include "stdafx.h" #include <string> #include <conio.h> void print_string(_TCHAR *string, int count){ for (int...
C++ Сравнить 2 двоичных дерева Ребята, помогите пожалуйста с лабораторной работой. Нужно сравнить 2 двоичных дерева, одинаковые ли они. Преподаватель просит переделать функцию сравнения двух деревьев. Подскажите, как ее можно по... подробнее

Показать сообщение отдельно
Дантe
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 28

Наследование и виртуальные методы - C++

14.06.2014, 19:24. Просмотров 295. Ответов 2
Метки (Все метки)

Начал разбираться с темой наследование и не совсем понимаю как наследуются виртуальные методы, конструкторы и деструкторы виртуальные и нет. Поэтому возникло несколько вопросов. Почему говориться, что конструкторы и деструкторы не наследуются, но при этом в случае ниже вызываются оба деструктора для подкласса.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Base {
 public:
     virtual ~Base() { cout << " Base's destructor" << endl; }
};
 
class Derived : public Base {
    public:
     ~Derived() { cout << " Derived's destructor" << endl; }
};
 
void main()
{
     Derived* b = new Derived;
     delete b;
}
И как правильно создавать объект в каких ситуациях "Derived* b = new Derived;" и в каких "Base* b = new Derived;" ?

Если я правильно понял, то подкласс не может изменить функцию если она не виртуальная, но почему в этом случае разницы никакой нет?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
class Russ {
    public:
        ~Russ() {
            cout << "Good Bye WORLD!!!" << endl;
        }
        void Name() {
            cout << "Russ VOID Name!" << endl;
        }
        virtual void Surname() {
            cout << "Russ VIRTUAL VOID Surname!" << endl;
        }
};
 
class English : public Russ {
    private:
        int Y;
    public:
                void Name() {
            cout << "English VOID Name!" << endl;
        }
                virtual void Surname() {
            cout << "English VIRTUAL VOID Surname!" << endl;
        }
};
 
void main () { Russ *lv = new Russ;
                    English *en = new English;
 
                    lv->Name();
                    lv->Surname();
 
                    en->Name();
                    en->Surname();
 
                    delete en;
                    delete lv;
}
Как я понял в подклассах и вовсе не имеет смысла писать virtual?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru