Jaki jest cykl życia obiektu C ++?
Jestem wytrawnym deweloperem C, który dopiero zaczyna wchodzić w C ++ i muszę przyznać, że jestem bardzo zdezorientowany, jak wiele jest sposobów tworzenia, przechowywania i niszczenia obiektów C ++. W C życie jest proste: przypisanie do=
kopie na stosie imalloc
/free
zarządzaj danymi na stercie. C ++ jest dalekie od tego, a przynajmniej tak mi się wydaje.
W związku z tym oto moje pytania:
Czym sąwszystko sposoby tworzenia obiektu C ++? Bezpośredni / konstruktor kopii, zadanie itp. Jak działają?Jakie są wszystkie różne składnie inicjalizacji związane z tymi wszystkimi typami tworzenia obiektów? Jaka jest różnica pomiędzyT f = x
, T f(x);
, T f{x};
itd.?Najważniejsze,gdy czy prawidłowo jest kopiować / przypisać / cokolwiek=
jest w C ++ i kiedy chcesz używać wskaźników? W C bardzo przywykłem do rzucania wskaźnikamilos, ponieważ przypisanie wskaźnika jest tanie, ale kopiowanie struktury jest mniej. Jak wpływa na to semantyka kopiowania C ++?Na koniec, jakie są te wszystkie rzeczyshared_ptr
, weak_ptr
itd.?Przepraszam, jeśli jest to dość szerokie pytanie, ale jestem bardzo zdezorientowany, kiedy z czego korzystać (nawet nie wspominając o moim zamieszaniu dotyczącym zarządzania pamięcią w kolekcjach inew
operator) i czuję, że wszystko, co wiedziałem o zarządzaniu pamięcią C, załamuje się w C ++. Czy to prawda, czy też mój model mentalny jest po prostu zły?
Podsumowując: w jaki sposób obiekty C ++ są tworzone, inicjowane i niszczone oraz kiedy należy używać każdej metody?