Форум программистов, компьютерный форум, киберфорум
Наши страницы

Конструктор вызывается один раз, а деструктор два раза - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Определить условие попадание точки в заданную область http://www.cyberforum.ru/cpp-beginners/thread802937.html
Нуждаюсь в помощи в написании условия для проверки попадает ли заданная координатами X,Y точка в серую фигуру. Вопрос скорее относится к геометрии чем к программированию, но все же) Заранее очень...
C++ Как подписать программу своим сертификатом? Всем привет! Как можно подписать программу, используя свой сертификат? Использую Visual C++ 2012 Express. Заранее спасибо Добавлено через 5 часов 42 минуты Никто не знает??? Добавлено... http://www.cyberforum.ru/cpp-beginners/thread802929.html
C++ Сформировать динамический список (стек или очередь), считая, что длина списка (количество элементов) задана
Сформировать динамический список (стек или очередь), считая, что длина списка (количество элементов) задана. Описать функцию, которая подсчитывает число вхождений элемента Е, значение ко-торого...
C++ Написать функцию, осуществляющую циклический сдвиг строк и/или столбцов заданной матрицы
2. Дана матрица порядка MxN (M строк, N столбцов). Необходимо заполнить ее значениями и написать функцию, осуществляющую циклический сдвиг строк и/или столбцов массива указанное количество раз и в...
C++ изменения порядка битов в 2-ч байтовом целом http://www.cyberforum.ru/cpp-beginners/thread802912.html
Доброго времени суток!:) Решаю следующую задачу, нужно ввести число, а затем поменять порядок битов в нем на обратный, так вот что-то не получается... заранее благодарю за помощь!) #include...
C++ Тип данных - массив Добрый день. Помогите разобраться с шаблоном, а точнее с типом массива. Вот сам код: #include <iostream> #include <iomanip> using namespace std; template <class T,int n> void init (T (&arr)... подробнее

Показать сообщение отдельно
pi_X_el
Заблокирован

Конструктор вызывается один раз, а деструктор два раза - C++

07.03.2013, 19:21. Просмотров 556. Ответов 4
Метки (Все метки)

Программа для обработки исключений.
Вообщем если ввести два числа и второе будет 0, то конструктор будет вызван 1 раз, а деструктор 2 раза.
Мне вот это непонятно, как такое вообще может быть?

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
#include <iostream>
 
class CDivideByZeroError
{
public:
    CDivideByZeroError() : m_message("Деление на нуль.")     { std::cout << "Конструктор." << std::endl; }
    ~CDivideByZeroError()           { std::cout << "Деструктор" << std::endl; }
    void PrintMessage() const       { std::cout << m_message; }
private:
    const char *m_message;
};
 
double Quotient(int a, int b)
{
    if (b==0)
        throw CDivideByZeroError();
 
    return double(a) / b;
}
 
 
int main()
{
    system("chcp 1251");
 
    int number1, number2;
 
    std::cout << "Введите два целых числа для рассчета их частного: ";
    std::cin >> number1 >> number2;
 
    try                                     // этот блок может сгенерировать исключение
    {
        double result = Quotient(number1, number2);
 
        std::cout << "Частное равно " << result << std::endl;
    }
    catch (CDivideByZeroError error)        // обработчик исключения
    {
        std::cout << "Ошибка: ";  //error.PrintMessage();
 
        std::cout << std::endl;
        system("pause");
        //return 1;
    }
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru