K.....1
K.....1
#programowanie #cpp #programista15k #gamedev
Mam takie pytanie, weźmy poniższa klasę

class Engine
{
Int zmienna;
Model* model;
Materiał* materiał;
Kolor kolor;

Void jakasfuncja();
}

I teraz w main () albo innym głównym bloku chce utworzyć obiekt tej klasy, ale robić to jako Engine engine czy Engine* engine = new Engine;

I od czego to zależy? Od ilości pamięci jaka ta klasa zabiera? Zadziała w obu przypadkach?
  • Najlepsze
  • Wszystkie komentarze
Nicolas_Bourbaki
@Kopytko1:
Engine engine; -> To tworzenie zmiennej na stosie.
Engine* engine = new Engine; To tworzenie obiektu na stercie i wskaźnika do niego na stosie.

Więcej
k.....e
k.....e
@Kopytko1: Zależy od tego czy chcesz mieć wskaźnik czy nie. Wskaźniki chce się z kilku powodów, np. żeby obiekt przeżył zakres w którym został zadeklarowny lub żeby nie kopiować go podczas przekazywania jako parametr

@plastkik: Przecież obiekty deklarowane jako zwykłe zmienne tez są zwalniane w trakcie działania programu xD
plastkik
@Kopytko1: ekspertem to ja nie jestem, ale jeżeli w czasie działania programu obiekt przestanie być potrzebny, to deklaruj dynamicznie, żebyś mógł potem zwolnić pamięć
k.....e
k.....e
@plastkik: A po co ma być usuwane wcześniej skoro do momentu wyjścia z maina ten obiekt jest używany?
k.....e
k.....e
@plastkik: no i po co coś takiego robić? Żreszta żeby nawet to osiągnąć to i tak nadal nie trzeba używać wskaźników
plastkik
@kebab-case: ale jak w mainie zdeklaruje to nie zostanie usunięty dopiero na samym końcu?
plastkik
@kebab-case: no mi chodziło właśnie o sytuację, ze zadeklaruje się w mainie i w którymś momencie już nie będzie potrzebne, a w samym mainie cos sie będzie jeszcze wykonywało
plastkik
@kebab-case: nie wiem,
K.....1
K.....1
@Nicolas_Bourbaki: dzięki szczegółowa odpowiedź
K.....1
K.....1
@Nicolas_Bourbaki: o sprytnych wskaźnikach nie słyszałem dzieki