Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 24.06.2013
Сообщений: 37

Класс с деструктором без конструктора

26.06.2013, 13:39. Показов 1407. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят подскажите, имеем например такой код:
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 first
{
    public:
        first()
        {
    
        }
 
        ~first()
        {
    
        }
};
 
class second: public first
{
    public:
        void func()
        {
 
        }
 
        first::func();
 
        ~second()
        {
    
        }
};
Вопрос, можно ли объявлять класс с деструктором без конструктора? Или second унаследует конструктор из класса first? и будет ли работать first::func(); ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.06.2013, 13:39
Ответы с готовыми решениями:

Класс без конструктора. Ошибка 1 неразрешенных внешних элементов
Добрый вечер. Помогите исправить ошибку. Пример у Страуструпа не работает. При компиляции появляется ошибка 1 неразрешенных внешних...

Класс с непустым деструктором
Доброго времени суток. Необходимо создать класс, который должен содержать освобождающий занятые классом ресурсы. Вот такое я написал: ...

Класс с Конструктором и Деструктором
напишите класс, содержащий закрытые целочисленные переменные , характеризующие координаты точки в пространстве и ее температуру(с плавающей...

9
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
26.06.2013, 13:40
Цитата Сообщение от cflood Посмотреть сообщение
first::func(); ?
В first нет такой функции
1
0 / 0 / 0
Регистрация: 24.06.2013
Сообщений: 37
26.06.2013, 13:41  [ТС]
Верно, понял

А насчёт деструктора без конструктора?
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
26.06.2013, 13:46
для secon будет создан конструктор по умолчанию, как и для любого класса. А в классе first уже есть свой конструктор без параметров, который будет вызываться из конструктора second при создании объекта типа second
1
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
26.06.2013, 13:48
будет неявно вызываться конструктор базового класса
1
0 / 0 / 0
Регистрация: 24.06.2013
Сообщений: 37
26.06.2013, 13:58  [ТС]
Благодарю, подскажите пожалуйста еще какие явные ошибки могут быть в следующем коде:
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
38
39
40
41
42
43
44
45
46
class FileClient
{
protected:
    char* p;
public:
    
    virtual void connect() = 0;
    void close(){}
    virtual void ping()
    {
        printf("%s : %s", "__FUNCTION__", p);
    }
    FileClient()
    {
        p = new char[10];
        p[0]='1';
    }
    ~FileClient()
    {
            delete p; // разве нужно не delete[] p ?
    }
};
class Client: public FileClient
{
    FILE* hFile;
public:
    virtual void connect()
    {
        hFile = fopen("test.txt", "w");
    }
    void ping()
    {
        char arr[] = {0, 0, 5, 56, 12, 32};     // 0, 0, 5, 56, 12, 32 - коды символов ибо char, верно?
        fwrite(arr, 1, sizeof(arr), hFile);
            FileClient::ping();     // не будет работать, функция не определена в классе FileClient
    }
    ~Client()
    {
            delete[] p;
            p = 0;  // это тоже вызывает подозрение, есть в этом смысл?
    }
};
FileClient* client = new Client;
client->connect();
client->ping();
delete client;
0
 Аватар для Olivеr
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
26.06.2013, 14:01
@cflood,
C++
1
FileClient* client = new Client;
сделайте деструктор класса FileClient виртуальным, иначе в данном случае вызовется только деструктор FileClient, а Client - нет
1
0 / 0 / 0
Регистрация: 24.06.2013
Сообщений: 37
26.06.2013, 14:09  [ТС]
Olivеr, благодарю, а по поводу моих комментариев к коду есть какие мысли? верно предполагаю?
0
 Аватар для Olivеr
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
26.06.2013, 14:11
@cflood,
Кликните здесь для просмотра всего текста
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
38
39
40
41
42
43
44
45
class FileClient
{
protected:
    char* p;
public:
 
    virtual void connect() = 0;
    void close() {}
    virtual void ping() {
        printf("%s : %s", "__FUNCTION__", p);
    }
    FileClient() {
        p = new char[10];
        p[0]='1';
    }
    virtual ~FileClient() {
        delete[] p; //да, нужно
    }
};
class Client: public FileClient
{
    FILE* hFile;
public:
    virtual void connect() {
        hFile = fopen("test.txt", "w");
    }
    void ping() {
        char arr[] = {0, 0, 5, 56, 12, 32};     // 0, 0, 5, 56, 12, 32 - коды символов ибо char, верно?
        //да, но нули будут восприниматься как терминальные
        fwrite(arr, 1, sizeof(arr), hFile);
        FileClient::ping();     // не будет работать, функция не определена в классе FileClient
        //будет, она определена
    }
    ~Client() {
        //p удаляется в базовом
    }
};
 
int main()
{
    Client* client = new Client;
    client->connect();
    client->ping();
    delete client;
}


я поправил кое что. пересмотрите пожалуйста
1
0 / 0 / 0
Регистрация: 24.06.2013
Сообщений: 37
26.06.2013, 14:18  [ТС]
Olivеr, и еще раз огромное спасибо за помощь

Добавлено через 5 минут
Oliver, и еще раз спасибо насчёт
C++
1
FileClient::ping();
проглядел, действительно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.06.2013, 14:18
Помогаю со студенческими работами здесь

Реализовать класс строки с деструктором
Конструкторов у структуры может быть несколько. Для строки может оказаться полезным заполняющий конструктор (например, чтобы создать строку...

Вернуть полноценный класс с деструктором из функции
можно ли вернуть из функции класс? я имею ввиду полноценный класс с деструктором (например std:string) просто по идее вот например создал...

Класс: Создать класс "Растение" с конструкторами и деструктором
Создать класс с конструкторами (с параметрами, конструктор копирования, конструктор без параметров) и деструктором. Класс растения.

Буст сериализация. указатель на абстрактный базовый класс без конструктора по умолчанию
Читая документацию по сериализации с помощью буста запутался. Ситуация следующая. Имеется виртуальный базовый класс в Base.h: ...

Не имеющий конструктора без параметров базовый класс (аргументов) не разрешает плодить наследников
Здравствуйте, никак не могу понять, в чём проблема. Возникла необходимость переопределить аргументы для BackgroundWorker'а в DoWork, но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru