Aktywne Wpisy

Naczelna_Hedonistka +144
Jesteście ciekawi jak wygląda 140 pierogów i 160 uszek? ( ͡° ͜ʖ ͡°)
#wolnoscdlapierogownawykopie #swieta #gotujzwykopem
#wolnoscdlapierogownawykopie #swieta #gotujzwykopem
źródło: 1000023193
Pobierz
Teuvo +11
tak się składa że najlepsze smaki monsterów to te cytrusowe czyli nitro, V46 w wersji z cukrem oraz bez, lemoniada, ruby red
jest jeszcze parę dobrych niecytrusowych jak np. ultra piczy kin, nitro brzoskwiniowe, pacific punch, pewnie jeszcze coś ale to i tak tier 2 co najwyżej
jest jeszcze parę dobrych niecytrusowych jak np. ultra piczy kin, nitro brzoskwiniowe, pacific punch, pewnie jeszcze coś ale to i tak tier 2 co najwyżej





1. Czy jak zrobie taką sytuację:
np:
B - klasa bazowa
D : B - klasa pochodna
B* p;
*p = D(paramtery konstruktora...);
to obiekt utworzy mi się na stercie i muszę w takim wypadku pamiętać o delete?
i czy utworzy mi się normalny pełnoprawny obiekt klasy D (jedynie dostęp będę miał ograniczony przez pryzmat wskaźnika jako do klasy B) ?
2. Jak mogę bezpośrednio stworzyć obiekt klasy pochodnej i przypisać go do wskaźnika klasy bazowej tak jak powyżej ale w przypadku gdy mam vektor wskaźników? np (oznaczenia B i D jak powyżej):
vector v;
v.push_back( D(paramtery konstruktora...) ?co jeszcze? );
B - klasa bazowa
D : B - klasa pochodna
B*
*p = new D(paramtery konstruktora...);
v.push_back( new D(paramtery konstruktora...) ?co jeszcze? );
musisz oczywiście później pamiętać o zwalnianiu pamięci za pomocą delete.
p = new D(paramtery konstruktora...);
@PanCogito: Już przestałem czytać
Ale to nie powinno zadzałać. Dlatego że przypisujesz do wskaźnika obiekt tymczasowy (który zostanie usunięty odrazu po utworzeniu).
Bez new obiekt jest zawsze tworzony na stosie.
std::unique_ptri o ƶadnymdeletenie musisz pamiętać. Jak masz nowy kompilator tostd::make_uniquezamiastnewMoja
wiem że tak się nie powinno robić ale chciałem zapytać bo w jakiejś książce przeczytałem że obiekt się stworzy ale coś będzie z nim ogólnie nie tak (nie mogę teraz znaleźć gdzie to było).
Czyli nie mogę bezpośrednio stworzyć i przypisać do wskaźnika jakiegoś obiektu tak żeby nie był on na stercie.
w sumie jak tak myślę nad tym to trochę kombinuje. Właściwie to po to się właśnie rzeczy umieszcza na stercie żeby takie coś można było robić muszę tylko potem pamiętać o delete.
Przesiadłem się z C# a tam się takie rzeczy robiło automatycznie ale garbage collector skrzętnie ukrywał całą mechanike.
B* p = D(...)nie jest poprawnym kodem C++ i się nie skompiluje, chyba, ƶe maszoperator B*()()luboperator D*()()przeładowany w klasieBlubD.