public:
std::string dest;
int b = 0;
Tracer(std::string constr, std::string destr): dest{destr}
{
std::cout<<constr<<" created"<<"\n";
}
Tracer(int a, std::string constr, std::string destr): dest{destr}, b{a}
{
std::cout<<b<<" "<<constr<<" created"<<"\n";
}
Tracer(): dest{""}
{
std::cout<<"mass objects created"<<"\n";
}
~Tracer()
{
std::cout<<b<<" "<<dest<<" deleted"<<"\n";
}
};
int main()
{
Tracer t1("first loc","first loc");
Tracer* pt1 = new Tracer[10];
for (int i = 0; i < 10; i++) {
pt1[i] = Tracer(i,"loc mass","loc mass");
}
delete[] pt1;
return 0;
} почему в чикле после создания и присваивания объектов в pt1[i] вызывется деструктур и для какого из объектов?
для вот этого Tracer(i,"loc mass","loc mass");
а почему, они же по идее должны сохраняться, иначе их же не смогу использовать после?
хранятся копии. это же не java. ты создал временный объект, его копия сохранилась в элементе массиве pt1[i], все, временный объект уничтожился после ;
мув не влияет на время жизни объекта
Обсуждают сегодня