Я изучаю конструкторы и деструкторы на с ++; Помоги мне понять мои ошибки, даже если они глупы ...
ЗДЕСЬ это код, который я написал для выполнения сложения с использованием классов в c ++; Это создает два слагаемых с типом данных num и использует конструктор sum () для выполнения суммирования двух чисел; Однако, когда все было хорошо, я наткнулся на создание конструктора копирования для num (хотя и не обязательно, но все еще для практики) ... без динамического объекта класса sum запустить невозможно в любом случае код (без удаления конструктора копирования) ... Помогите мне улучшить мой код и мои ошибки в приведенном ниже коде; Также я хочу знать, как использовать конструктор копирования в этой программе; проблема в том, что в деструкторе операция удаления выполняется несколько раз на одном и том же фрагменте памяти (я полагаю)
Вот мой код
#include<iostream>
#include<new>
using namespace std;
class num
{
public:
int *a;
num(int x)
{
try
{
a=new int;
}
catch(bad_alloc xa)
{
cout<<"1";
exit(1);
}
*a=x;
}
num(){ }
num(const num &ob)
{
try
{
a=new int;
}
catch(bad_alloc xa)
{
cout<<"1''";
exit(2);
}
*a=*(ob.a);
}
~num()
{
cout<<"Destruct!!!";
delete a;
}
};
class sum:public num
{
public:
int add;
sum(num n1,num n2)
{
add=*(n1.a)+*(n2.a);
}
int getsum()
{
return add;
}
};
int main()
{
num x=58;
num y=82;
sum *s=new sum(x,y);
cout<<s->getsum();
delete s;
return 0;
}