Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
class Cnt {
private:
X* ia;
X* ib;
public:
Cnt(int a, int b) : ia(new X(a)), ib(new X(b)) {
foo(auto_ptr<T>(new T), auto_ptr<T>(new T));
Cnt(int a, int b, int c, int d) {
xa = xb = xc = xd = 0;
try {
xa = new X(a);
xb = new X(b);
xc = new X( c);
xd = new X(d);
} catch (...) {
if (xa) delete xa;
if (xb) delete xb;
if (xc) delete xc;
if (xd) delete xd;
throw;
}
}
if (xa) delete xa;
delete xa;
Как только вы написали «new», вы обязали себя написать «delete» везде, где это нужно.Неправильно. Как только вы написали new, вы обязаны завернуть результат в умный указатель и забыть про delete вообще.
Безопасные конструкторы