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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Отсортировать массив со случайными числами по убыванию http://www.cyberforum.ru/cpp-beginners/thread1060646.html
отсортировать массив со случайными числами по убыванию и указать на последний элемент
C++ шаблон с конструктором копирования Найдите периметр и площадь выпуклого многоугольника. Распределение памяти для хранения массивов должно осуществляться динамически(в конструкторе), а освобождение-в деструкторе. http://www.cyberforum.ru/cpp-beginners/thread1060642.html
C++ STL, vector. iterator. как работает?
void invertArrange() //метод инвертирования порядка слов { istringstream ist(operLine); //Превращаем строку в поток vector<string> v((istream_iterator<string>(ist)), istream_iterator<string>()); //видимо помещаем поток в вектор? copy(v.rbegin(), v.rend(), ostream_iterator<string>(cout, " ")); //копируем в поток и выводим } Здравствуйте, пытаюсь...
Как лучше отлавливать нажатия клавиш на клавиатуре при активном окне C++
Здравствуйте.Делается проект Win32 на C++ с WinAPI.Подскажите пожалуйста (желательно с примерами) как лучше отлавливать нажатия на клавиатуре при активном окне. Например запущена моя программа и мне нужно при нажатии кнопок вверх, вниз, влево, вправо и Enter обрабатывались определенные сценарии как это можно реализовать?
C++ Перегрузка оператора, для множественного использования http://www.cyberforum.ru/cpp-beginners/thread1060609.html
Всем доброе утро и с наступающим! Делаю свой класс строки, и мне захотелось сделать так чтобы ввод в эту строку был подобно выводу cout например: int a; char b; char c; OPstring str; str>>"i=">>a>>" a tak kak ">>c>>" olo ">>b; Так вот, класс я сделал, и перегрузку оператора >> сделал. Но встряла одна проблема! Он может делать это все только одно действие за раз! str>>a; str>>"=";
C++ Не получается написать "Hello world!" Здравствуйте. Я решил попробовать научиться программировать по книге Бьерна Страуструпа "Программирование. Принципы и практика использования С++" и первое же задание вызвало у меня затруднения. Вот код из книги ( без комментариев после знака //): #include "std_lib_facilities.h" int main() { cout << "Hello, World!\n"; return 0; } Сообщение "Hello, World!" не появилось, а при... подробнее

Показать сообщение отдельно
noname_club
 Аватар для noname_club
100 / 88 / 9
Регистрация: 01.05.2013
Сообщений: 563
30.12.2013, 12:06     виртуальный деструтор
нужно ли вообще деструктор класса делать виртуальным?

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
class base_class1 {
public:
    base_class1() {
        data = new char[50];
        sprintf(data, "hello world");
    };
    ~base_class1() {
        cout << "~base_class1 free " << data << " " << endl;
        delete [] data;
    };
    
    char * data ;
    
};
 
class base_class2: public base_class1 {
public:
    base_class2() {
        data2 = new char[50];
        sprintf(data2, "hello world2");
    };
    ~base_class2() {
        cout << "~base_class2 free " << data2 << " " << endl;
        delete [] data2;
    };
    
    char *data2;
 
};
и теже самые классы с виртуальными деструкторами

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
class base_class1 {
public:
    base_class1() {
        data = new char[50];
        sprintf(data, "hello world");
    };
    virtual ~base_class1() {
        cout << "~base_class1 free " << data << " " << endl;
        delete [] data;
    };
    
    char * data ;
    
};
 
class base_class2: public base_class1 {
public:
    base_class2() {
        data2 = new char[50];
        sprintf(data2, "hello world2");
    };
    virtual ~base_class2() {
        cout << "~base_class2 free " << data2 << " " << endl;
        delete [] data2;
    };
    
    char *data2;
 
};
код программы

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include "myclasses.h"
 
int main(int argc, const char * argv[])
{
 
    
    base_class2 *c2 = new base_class2();
    
    delete c2;
 
    return 0;
}
ответ консоли в обоих случаях

~base_class2 free hello world2
~base_class1 free hello world
Program ended with exit code: 0
То есть наличие слова virtual не влияет на деструктор вообще?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 12:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru