Klasa alokowana dynamicznie

Odpowiedz Nowy wątek
2015-01-08 15:49
0

Tak jak w temacie. Czyli jak? Że new nazwa_klasy nazwa_zmiennej? XD

Pozostało 580 znaków

2015-01-08 15:55
MojaKlasa* cos = new MojaKlasa;

Pozostało 580 znaków

2015-01-08 15:57
0

Dobra to chcialem wiedzieć, dzieki :D a przy usuwaniu jej? delete MojaKlasa czy delete cos?

Pozostało 580 znaków

2015-01-08 16:01
1
aksjio napisał(a):

a przy usuwaniu jej? delete MojaKlasa czy delete cos?

Wyobraź sobie, że masz taki kod:

MojaKlasa* cos = new MojaKlasa;
MojaKlasa* innecos = new MojaKlasa;

Teraz jak chcesz usunąć cos to zrobisz delete cos czy delete MojaKlasa?

Pozostało 580 znaków

2015-01-08 16:08
0

Wolałem się jednak upewnić ;) Dzieki za szybką pomoc.

Pozostało 580 znaków

2015-01-08 16:09
1

jak to pytanie cpp to

auto x = std::make_unique<MojaKlasa>(parametry konstruktora);
// lub
auto x = std::make_shared<MojaKlasa>(parametry konstruktora);

i nie będziesz musiał używać żadnych new i delete

Pozostało 580 znaków

2015-01-08 16:55
0

@gośćabc muszę użyć new i delete... a wracając do tematu, jak w dekonstruktorze usunąć tą zmienną cos?

delete cos - twonek 2015-01-08 17:07
powiedz panu profesorowi, że za new i delete zwalniają teraz z pracy :) - gośćabc 2015-01-08 17:21
Gdzie tak zwalniają? - n0name_l 2015-01-08 17:26
przenośnia (nie uczyć nowych złych nawyków) - gośćabc 2015-01-08 17:28
http://wklej.org/id/1587776/ i wywala mi że 'b' was not declared in this scope. - aksjio 2015-01-08 17:33

Pozostało 580 znaków

2015-01-08 17:40
0

http://wklej.org/id/1587776/ i wywala mi że 'b' was not declared in this scope.

int main
{
    ...    
    Book* b= new Book(a,z,c,d,e);
    b->show();
    delete b;
}

Book::~Book()
{}

Tak naprawdę destruktora nie potrzebujesz w tym przypadku, bo nie ma nic do roboty.

Pozostało 580 znaków

2015-01-08 17:44
0

No dobra to wywale ten dekonstruktor i mam nadzieje że mi zaliczy bo kazała usunąć to w dekonstruktorze.

chyba w ogóle nie zrozumiałeś o co "jej" chodzi - gośćabc 2015-01-08 17:47
Dostalem od niej kartke. "Stwórz klase alokowaną dynamicznie, konstruktor z listą inicjalizacyjną, w destruktorze zwolnij pamięć" potem dopytywałem o ten destruktor to wyraźnie mówiła usunąć zmienną powołaną przy użyciu new i tyle... co tu mogłem zrozumieć źle? - aksjio 2015-01-08 17:55
w destruktorze pamięć się zwalnia sama, chyba że w obiekcie coś trzymasz zaalokowanego dynamicznie, np. http://melpon.org/wandbox/permlink/I4fV0sJuZhwcgqgm edit: tutaj lepszy use case, gdzie masz dodatkowo obiekt nie alokowany dynamicznie http://melpon.org/wandbox/permlink/9kyEAwwoRAEfpLqJ - gośćabc 2015-01-08 17:58

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0