1 / 1 / 0
Регистрация: 28.09.2016
Сообщений: 16
1

Объект создаётся конструктором по умолчанию и сразу "ломается"

30.10.2018, 13:23. Показов 1021. Ответов 1

При создании объекта z программа идёт сначала в Polynomial(), оттуда в Polynomial(int), а после выхода из последнего внезапно вызывается деструктор, причём на объект с адресом, отличным от &z. После этого z.degree почему-то становится равным 2 (думаю, это мусор), и дальнейшая работа с ним невозможна до тех пор, пока, например, не будет выполнено z = f, где f - созданный с помощью конструктора с параметрами объект.

Таковы определения конструкторов:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Polynomial::Polynomial()
{
    Polynomial(-1);
}
    
Polynomial::Polynomial(int degree) : degree(degree)
{
    if (degree < -1)
        throw "Illegal using of (degree) ctor.";
    else if (degree == -1)
    {
        coeffs = new double[1];
        coeffs[0] = 0.;
    }
    else
    {
        coeffs = new double[degree + 1];
        for (int i = 0; i < degree; i++)
            coeffs[i] = 0.;
        coeffs[degree] = 1.;
    }
}
Вот определение деструктора:
C++
1
2
3
4
Polynomial::~Polynomial()
{
    delete [] coeffs;
}
Собственно, main():
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int main()
{
    try
    {
        Polynomial z;
        z.show();
    }
    catch (const char *e)
    {
        std::cout << e << std::endl;
        return 0;
    }
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.10.2018, 13:23
Ответы с готовыми решениями:

Значение полей по умолчанию : "нет значения поля по умолчанию"; "Null";"0"
Форумчане, доброго времени суток! Подскажите. пожалуйста, как правильно указывать значение поля по...

Не создается объект. Ошибка "autorelease called without pool for object of class"
Здравствуйте. Почему не создается объект Rect? #import &lt;Foundation/Foundation.h&gt; @interface...

Не создается объект "Excel.Application"
не могу сделать CreateObject('Excel.Application') Ругается 'Разрешение отклонено: 'CreateObject''...

Значение по умолчанию: "0"; "Null"; "нет значения по умолчанию"
Форумчане, прошу Вашего совета! В свойствах поля таблицы MySQL &quot;Значение по умолчанию&quot; есть :...

1
16469 / 8968 / 2199
Регистрация: 30.01.2014
Сообщений: 15,571
30.10.2018, 13:33 2
Лучший ответ Сообщение было отмечено Grzyb как решение

Решение

Цитата Сообщение от Grzyb Посмотреть сообщение
C++
1
Polynomial(-1);
Вы тут создали безымянный временный объект, который сразу же и уничтожился.
Наверное вам надо что-то такое:
C++
1
2
3
Polynomial::Polynomial() : Polynomial(-1)
{
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.10.2018, 13:33
Помогаю со студенческими работами здесь

Как сделать чтобы через запрос заполнялись характеристики поля: "значение по умолчанию", "формат rtf", "описание"?
SQL запрос создаёт таблицу. create table Группы (КодГруппы COUNTER CONSTRAINT PrimaryKey...

Как по умолчанию отображать только "Имя" в папках? [Без "Дата изменения", "Тип"]
Необычный вопрос, может кто знает. Вот как выглядит любая папка стандартно: А Мне нужно чтобы...

Как сделать по умолчанию вид "таблица" в окне "открыть" и "выгрузка файла"?
Вид данного окна, по умолчанию &quot;список&quot;. Мне же нужно сделать его &quot;таблица&quot;. Как? ...

Класс "Графический объект", от которого будут наследоваться классы "круг" и "квадрат"
Реализовать класс Графический объект от которого будут наследоваться классы &quot;круг&quot; и &quot;квадрат&quot;....


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru