Ммм ... ты на самом деле утечешь.
Каждый объект возражения, созданный ключевым словом new
, должен иметь эквивалентное значение delete
:
void test() {
cout << "Test1 begins..." << endl;
A* a1 = new D();
cout << "Test2 begins..." << endl;
A* a2 = new E();
delete a1;
delete a2;
}
Разработчики (только в вашем случае) всегда забывали удалять динамически размещаемые объекты, поэтому умные указателибыли введены:
void test() {
cout << "Test1 begins..." << endl;
std::unique_ptr<A> a1(new D());
cout << "Test2 begins..." << endl;
std::unique_ptr<A> a2(new E());
}
не нужно беспокоиться об утечке, так как unique_ptr
автоматически удаляет их pointee, когда они выходят из области видимости.