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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Ввести с клавиатуры два массива http://www.cyberforum.ru/cpp-beginners/thread1170663.html
Ввести с клавиатуры два массива с одинаковым количеством элементов. Вывести на экран одномерный массив, четными элементами которого будут элементы первого массива, а нечетными - второго массива.
C++ В одномерном массиве определить и вывести на экран количество элементов, которые меньше левого, но больше прав В одномерном массиве определите и выведите на экран количество элементов, которые меньше левого, но больше правого соседнего элемента. http://www.cyberforum.ru/cpp-beginners/thread1170662.html
C++ Ошибка при записи в бинарный файл
Задание - записать в бинарный файл последовательность из N байт вида "00001111 11110000 00001111 ...". Почему-то 11110000 записывается неправильно. Это 240 в десятичной и F0 в шестнадцатеричной системе, но при считывании получается FFFFFFF0. И дублируется последний байт. Почему? #include <iostream> #include <fstream> using std::ifstream; using std::ofstream; using std::cin; using...
C++ Ошибка function should have a prototype
Здравствуйте форумчане. Вот такой вопрос: писала как-то программу на Borland C++. Всё запускалось, прекрасно работало. Скачала полную версию того же Borland 3.1, вылезает 3 ошибки на функциях textcolor, textbackground, window. Заголовочный файл conio.h подключен, проверила в папке include, открыла этот самый conio.h и вроде эти функции там прописаны, но компилятор ругается и пишет "Function .......
C++ Запутался в терминах (ключевые слова и зарезервированные слова) http://www.cyberforum.ru/cpp-beginners/thread1170639.html
привет. читаю книгу по С++. там такие понятия как "Ключевые слова" и "Зарезервированные слова" используются как синонимы. погуглил. аналогичная ситуация: Зарезерви́рованное сло́во (или ключево́е сло́во) — в языках программирования слово, имеющее специальное значение. Идентификаторы с такими именами запрещены. (здесь) и тут : " Ключевые слова — это предварительно определенные...
C++ Обязательно ли объявлять переменную для хранения адреса переменной как указатель? // Указатели #include <iostream> using namespace std; int Variable; int *pVariable; // int pVariable; int main() { подробнее

Показать сообщение отдельно
TanaTiX
Модератор
 Аватар для TanaTiX
2731 / 1576 / 144
Регистрация: 19.02.2011
Сообщений: 5,650
09.05.2014, 11:38     Особенности работы деструктора
Есть вот такой код. Все работает.
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?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 06:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru