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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Поиск и замена поля структуры в файле http://www.cyberforum.ru/cpp-beginners/thread1207981.html
Всем привет, возникла проблема с заменой определённой строки в файле. Задание состоит в том, что бы найти нужное поле в файле структуры и заменить его на новое, код вроде работает, но создаёт копии в конце файла. fstream f1(filename,ios::in); fstream f2("new",ios::out|ios::trunc); cout<<"Введите назначение склада для замены : "; cin>>poisk; fstream f2("new",ios::out|ios::app);...
C++ Реализация алгоритма Фибоначчи рекурсивным методом Пользователь вводит два числа сам и программа должна рассчитать остальные числа до определенной точки. У меня есть программа для чисел Фибоначчи, а переделать её для алгоритма у меня не получается. Помогите переделать код, пожалуйста :) #include <iostream> int fib(int n) { if(n < 3) return 1; http://www.cyberforum.ru/cpp-beginners/thread1207965.html
Отсортировать массив структур (фамилии студентов и размер их стипендии) по размеру стипендии C++
Помогите с задачей Условие:"заданный тип структур что содержатся следующие сведения какие фамилии студентов и размер их стипендии.Необходино посортировать по размеру стипендии" вот мои наработки по ней #include<iostream> #include<iomanip> #include<conio.h> #include<string.h> using namespace std; struct person{ char name;
Предусмотреть возможность выбора ввода данных: с клавиатуры или из файла C++
В общем дали экзаменационную работу на дом. А программирование изучаем по принципу- вот вам гугл... В общем суть программы: В программе предусмотреть возможность выбора ввода данных: с клавиатуры или из файла, а также возможность вывода данных в файл.Описать структуру Kvartira, содержащую следующие поля: номер квартиры, фамилия жильца, этаж, площадь квартиры, количество комнат, количество...
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 i = 0; i < count; i++) for (int j = 0; j < wcslen(string); j++) putwchar(string); }
C++ Сравнить 2 двоичных дерева Ребята, помогите пожалуйста с лабораторной работой. Нужно сравнить 2 двоичных дерева, одинаковые ли они. Преподаватель просит переделать функцию сравнения двух деревьев. Подскажите, как ее можно по короче записать? #include <iostream> using namespace std; //Наша структура struct node { int info; //Информационное поле node *l, *r;//Левая и Правая часть дерева подробнее

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

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

14.06.2014, 19:24. Просмотров 292. Ответов 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?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru