Z pewnością jest to konieczne, jak to napisałeś. Jednak nawet w przypadku klasy delete
klasa jest zasadniczo uszkodzona, ponieważ zarządza zasobem, ale nie jest zgodna z the rule of three.
Powiedział, że prawie na pewno nie ma powodu do ręcznego zarządzania pamięcią - rzadko jest. Jest wielce prawdopodobne, że należy albo po prostu mieć B
obiekt jako zmiennej składowej, lub należy używać inteligentne wskaźnik, jak QScopedPointer
:
struct A
{
QScopedPointer<B> b;
A() : b(new B()) { }
// No ~A() needed; when the A object is destroyed, QScopedPointer ensures
// that the B object pointed to by the member 'b' is destroyed and deleted.
};
Będziemy chcieli, aby upewnić się, że masz a good introductory C++ book tak, że można naucz się pisać prawidłowe programy w C++.
["A" również potrzebuje konstruktora kopiowania i operatora przypisania] (http://stackoverflow.com/questions/4172722/what-is-the-rule-of-three). – GManNickG