Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
Модератор
 Аватар для TanaTiX
2931 / 1790 / 180
Регистрация: 19.02.2011
Сообщений: 6,550

Особенности работы деструктора

09.05.2014, 11:38. Показов 786. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть вот такой код. Все работает.
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
47
48
#include <iostream>
#include <iomanip>
using namespace std;
 
class complex{
    private:
    double re,im;
    friend complex operator+(complex a, complex b){
        return complex(a.re+b.re,a.im+b.im);
    }
    public:
    complex(double r, double i){
        re=r;
        im=i;
    }
    complex(double r){
        re=r;
        im=0;
    }
    complex(){
        re=0;
        im=0;
    }
    ~complex(){
        cout<<"complex removed "<<re<<" "<<im<<endl;
    }
    void show(){
    cout<<re<<" "<<im<<endl;
}
};
 
 
int main(){
    double a,b,c,d;
    
    cin>>a;
    cin>>b;
    cin>>c;
    cin>>d;
    complex aa=complex(a,b);
    complex bb=complex(c,d);
    aa.show();
    bb.show();
    complex cc=aa+bb;
    cc.show();
    
    return 0;
}
Но я не могу понять одну вещь: к моменту окончания работы программы десьркктор вызываеься 5 раз (2 раза для введенных пар значений и 1 раз для суммы). Почему 5 раз, а не 3?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.05.2014, 11:38
Ответы с готовыми решениями:

Ошибка работы деструктора
Здравствуйте. Недавно начала программировать на C++, поэтому возможно жителям данного форума мой вопрос покажется сильно нубским. Тем не...

Программа падает во время работы деструктора
/ ConsoleApplication6.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include...

Особенности работы fread
Решаю типовую задачу: считывание заголовка bmp-файла (точечного рисунка). Однако у меня ничего не получалось. В ходе расследования...

3
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
09.05.2014, 12:01
Цитата Сообщение от TanaTiX Посмотреть сообщение
complex aa=complex(a,b);
Тут два объекта, один из которых временный. Строчкой ниже - аналогично.
0
Модератор
 Аватар для TanaTiX
2931 / 1790 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
09.05.2014, 12:06  [ТС]
Т.е. когда я передаю объект в качестве аргумента, то создается их копия, а не передается ссылка на них? Реально ведь создается только 3 объекта.
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
09.05.2014, 12:11
delete
Добавлено через 2 минуты
Все, вру я. RVO никто не отменял.
Просто смотрю не туда.
Цитата Сообщение от TanaTiX Посмотреть сообщение
operator+(complex a, complex b)
Тут-то по значению аргументы принимаются.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.05.2014, 12:11
Помогаю со студенческими работами здесь

Особенности и порядок работы с указателями, обмен данными между динамическими массивами
Написать программу обмена данными между двумя динамическими массивами,как можно проще. Заранее большое спасибо)

Работа деструктора
Доброго дня, уважаемые программисты! Лаба. Есть класс Дата_и_Время, в классе часть полей должна быть динамическими. class...

Вызов деструктора
При ручном вызове деструктора, освобождается ли память*

Вызов деструктора
Есть написанный мною код: #include &lt;iostream&gt; class Foo { private: int *key; public: Foo (const int a=0) { key = new int...

Ошибка деструктора
Имеется шаблон класса- динамического массива. После создания функции push_back начал ругаться конструктор. Объясните пожалуйста в чем дело?...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
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 - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru