przemekKK
(przemekKK)
18 Lipiec 2008 17:33
#1
Witam,
Stworzyłem klasę, w której mam destruktor. Następnie utworzyłem wskaźnik na moją klasę. I mam takie pytanie: Czy w momencie usunięcia wskaźnika (poprzez delete wskaźnik) destruktor zostanie automatycznie uruchomiony? Czy muszę go sam zainicjować przed usunięciem wskaźnika?
Dziękuję za pomoc
Fiolek
(Fiołek)
18 Lipiec 2008 17:41
#2
Czy ty z każdym pytaniem musisz lecieć na forum? Użyć Google/innej wyszukiwarki to nie łaska? Przecież to pierwszy wynik jest!
Na temat: tak, jest wywoływana(delete, przy free() nie).
A po za tym mialem podobne pytania i nie możesz przetestowac?!
nr47
(Sawyer47)
19 Lipiec 2008 08:25
#4
Sprawdź sobie za pomocą takiej przydatnej klasy.
class Tracker {
public:
Tracker() : m_name("default") {
std::cout << "Konstruktor " << m_name << std::endl;
}
Tracker(std::string name) : m_name(name) {
std::cout << "Konstruktor [" << m_name << "]" << std::endl;
}
Tracker(const Tracker& obj) : m_name(obj.m_name) {
std::cout << "Konstruktor kopiujący [" << m_name << "]" << std::endl;
}
~Tracker() {
std::cout << "Destruktor [" << m_name << "]" << std::endl;
}
void operator()(int i) {
std::cout << "operator()(" << i << ") [" << m_name << "]" << std::endl;
}
std::string method() {
std::cout << "method() [" << m_name << "]" << std::endl;
return m_name;
}
friend std::ostream& operator<<(std::ostream& stream, const Tracker& obj) {
stream << "Tracker(" << obj.m_name << ")\n";
return stream;
}
private:
std::string m_name;
};
PS. Wiem, że kod niezbyt ładny, ale użyteczny.