C++ Grundlagen Tutorial

แชร์
ฝัง
  • เผยแพร่เมื่อ 13 ม.ค. 2025

ความคิดเห็น • 32

  • @phenix7344
    @phenix7344 ปีที่แล้ว +1

    sehr cool deine videos auch nach 6 jahren noch, hab mich nie so richtig an das c zeug rangetraut aber die videos sind super :>

  • @rafalwilk8519
    @rafalwilk8519 5 ปีที่แล้ว +5

    Hey Pilzschaf bei 5:45 musst du schreiben (*Car).accelerate ()

  • @florianhellinger6631
    @florianhellinger6631 4 ปีที่แล้ว +5

    Hey Danke dir für die Super Videos.
    Super erklärt.
    Welchen Sinn macht es einen Pointer auf ein Objekt zu machen?
    Statt eimem . nehme ich ->
    Wofür benötige ich sowas?

  • @mauricefligg1192
    @mauricefligg1192 2 ปีที่แล้ว

    Hey Pilzschaf ich hab leider nicht ganz verstanden warum wir den Pen-Pointer im private Bereich der Car-Klasse machen. Bei 11:01

  • @thediaclub4781
    @thediaclub4781 3 ปีที่แล้ว +1

    Warum verwendet man jetzt new Car?
    Für eine normale Instanz würde man doch
    Car car = Car();
    verwenden? Könne man dann nicht einfach für einen Pointer auf car
    Car* pointer = &car;
    machen?

    • @Pilzschaf
      @Pilzschaf  3 ปีที่แล้ว +1

      Grundsätzlich geht das. Der große Unterschied liegt darin, wo das Car gepseichert wird bzw. wie lange es gespeichert wird. Car car = Car(); Wird auf dem Stack gespeichert und ist deshalb nur innerhalb der entsprechenden Funktion verfügbar. Es wird also im Endeffekt automatisch am Ende der Funktion gelöscht. Testen kann man das dann z.B. mit einem Destruktor. Mit new Car() wird die Klasse allerdings auf dem Heap erzeugt. Das bedeutet, dass diese auch nach dem Verlassen der Funktion verfügbar ist. Wenn der Speicher nicht mehr benötigt wird muss man diesen manuell mit delete car; wieder freigeben. Aufpassen muss man, wenn man einen Zeiger auf eine Klasse als return zurück gibt. In diesem Fall muss das Objekt zwingend auf dem Heap erstellt worden sein. Andernfalls wird ein Zeiger auf Speicher zurück gegeben, der durch das beenden der Funktion wieder frei geben wird. Also niemals
      Car* createCar() {
      Car car;
      return &car;
      }

    • @thediaclub4781
      @thediaclub4781 3 ปีที่แล้ว

      @@Pilzschaf Vielen Dank für die schnelle Antwort!
      Und auch vielen Dank für die vielen guten Tutorials

  • @oszi7058
    @oszi7058 7 ปีที่แล้ว

    Dankeschön ; )

    • @Pilzschaf
      @Pilzschaf  7 ปีที่แล้ว +1

      Schau mal hier vorbei, da ging es ab Minute 9 auch um mehrdimensionale Arrays
      th-cam.com/video/YgzqbJjzOok/w-d-xo.html

  • @modsforgames8040
    @modsforgames8040 4 ปีที่แล้ว

    Danke =)

  • @therealyunix
    @therealyunix 2 ปีที่แล้ว

    Danke für das informative Video!, übrigens die andere Schreibweise von _Car->brake()_ wäre _(*Car).brake();_

  • @thoren_1928
    @thoren_1928 7 ปีที่แล้ว +1

    Cooles Video!

  • @oszi7058
    @oszi7058 7 ปีที่แล้ว

    Ich hätte ne Frage hast du schon ein Video über 2d Arrays und 2. falls neinkönntest du bitte eines machen
    Danke ; )

    • @Pilzschaf
      @Pilzschaf  7 ปีที่แล้ว +1

      +Zombistriker 8 Nein habe ich noch nicht, ich werde aber Mal schauen, dass ich das in einem der kommenden Videos mal einbaue oder einen extra Part mache

  • @svenbittl2265
    @svenbittl2265 5 ปีที่แล้ว

    geil erklärt danke dir =)

  • @alexblack8613
    @alexblack8613 ปีที่แล้ว

    Wie würde ich jetzt ein Objekt erstellen, wenn ich den Constructor vorher mit Attributen deklariert habe?
    Also als Beispiel:
    Car :: car(float velocity, float position)
    {
    }
    Wenn ich dann Car* car = new Car schreibe, läuft das Programm nicht...

    • @Pilzschaf
      @Pilzschaf  ปีที่แล้ว +2

      Du musst in dem Fall dann bei new Car die Parameter in Klammer mitgeben. Also Car* car = new Car(10.0f, 5.0f);

    • @alexblack8613
      @alexblack8613 ปีที่แล้ว

      @@Pilzschaf Danke!

  • @Leonardo-eu7jt
    @Leonardo-eu7jt 3 ปีที่แล้ว

    Hey Pilzschaf, bei mir wird bei car -> accelerate(2.0f) ebenfalls der Destructor auf der Konsole ausgegeben. Ich benutze CLion mit 2020 C++ und gcc/g++. Das delete car; car = nullptr; gibt mir auch einen Fehler.

    • @Pilzschaf
      @Pilzschaf  3 ปีที่แล้ว

      Das ist in der Tat merkwürdig. Ist car ein Zeiger der mit new erstellt wurde? Oder ist car bei dir einfach nur ein Zeiger auf eine normale Car Instanz auf dem Stack?

    • @Leonardo-eu7jt
      @Leonardo-eu7jt 3 ปีที่แล้ว

      @@Pilzschaf
      Car* car1 = new Car;
      car1 -> accelerate(2.0f);

    • @Pilzschaf
      @Pilzschaf  3 ปีที่แล้ว

      @@Leonardo-eu7jt Ok, da sollte der Destruktor definitiv erst beim delete aufgerufen werden. Kann es sein, dass du vielleicht Konstruktor und Destruktor verwechselst?

    • @Leonardo-eu7jt
      @Leonardo-eu7jt 3 ปีที่แล้ว

      @@Pilzschaf Nein, es wird beides ausgegeben.
      Car::Car() {
      std::cout

    • @Pilzschaf
      @Pilzschaf  3 ปีที่แล้ว

      Und der Destruktor wird auch aufgerufen, wenn du delete nicht aufrufst?