DELETE() - Wird das Objekt wirklich gelöscht?



  • @john-0 sagte in DELETE() - Wird das Objekt wirklich gelöscht?:

    Es ist meines Erachtens viel zu fordernd direkt mit Allocatoren anzufangen,

    Das habe ich weder gemeint noch gefordert. So weit muss man nicht gehen. Die Probleme fangen doch schon beim Copy-Constructor an. Rule of 3. (5 ist zu advanced). Im obigen Beispiel muss man zudem doppelt aufpassen. Einmal mit dem Namen des Autos, das man ja als char* behandelt. Und einmal im aufrufenden Code, der Autos erzeugt und zerstört. Durch das Ersetzen von char* -> std::string hätte man das Problem halbiert, könnte aber immer noch new/delete lehren. Oder man macht als Übung, einen vector neu zu implementieren. Es gibt genügend Möglichkeiten, new/delete zu lehren, ohne in die Probleme zu laufen. Beantworte mir doch mal, warum sich Auto um String-Behandlung kümmern sollte. Genau das sollte eben nicht gelehrt werden. Stattdessen sollte separation of concerns gelehrt werden. Und zwar nicht nur theoretisch, sondern gleich hier. Einer kümmert sich um die String-Verwaltung und einer um Autos. Und gut ists.

    @john-0 sagte in DELETE() - Wird das Objekt wirklich gelöscht?:

    Du hast ja selbst den Link auf den CppCon Vortrag beigetragen, in dem aufgefordert wird mit C anzufangen.

    Wird es das? Kate Gregory sagt genau das Gegenteil! Wer C++ lehrt, sollte nicht C lehren - weil eben viele C-isms schlechter Stil in C++ sind. Insbesondere (im Video die Slide bei etwa bei 420s) schreibt sie: "Just because you can lean C++ as an add-on to C doesn't mean those who know neither should learn C first. My position is that doing so is actively harmful"



  • @wob sagte in DELETE() - Wird das Objekt wirklich gelöscht?:

    Das habe ich weder gemeint noch gefordert. So weit muss man nicht gehen. Die Probleme fangen doch schon beim Copy-Constructor an. Rule of 3. (5 ist zu advanced). Im obigen Beispiel muss man zudem doppelt aufpassen. Einmal mit dem Namen des Autos, das man ja als char* behandelt. Und einmal im aufrufenden Code, der Autos erzeugt und zerstört. Durch das Ersetzen von char* -> std::string hätte man das Problem halbiert, könnte aber immer noch new/delete lehren.

    Das stammt von StudiengangPanik und ist wohl nicht Teil der Aufgabenstellung. Es ist wohl der Tatsache geschuldet, dass in der Vorlesung entsprechende Dinge nicht eingeführt wurden. Und natürlich wäre das alles sehr viel besser vermittelbar. Nur es wird eben nicht getan, und daran ändern hier ständige Beschwerden rein gar nichts. Das hilft den Studenten nicht weiter uns sorgt höchstens dafür, dass sie sich vom Forum abwenden.

    Oder man macht als Übung, einen vector neu zu implementieren. Es gibt genügend Möglichkeiten, new/delete zu lehren, ohne in die Probleme zu laufen. Beantworte mir doch mal, warum sich Auto um String-Behandlung kümmern sollte. Genau das sollte eben nicht gelehrt werden. Stattdessen sollte separation of concerns gelehrt werden. Und zwar nicht nur theoretisch, sondern gleich hier. Einer kümmert sich um die String-Verwaltung und einer um Autos. Und gut ists.

    Wie bereits beschrieben, das Problem ist, dass Du die falschen Personen ansprichst. Die Studenten können nichts für die Aufgabenstellung.

    Wird es das?

    Entschuldigung, da fehlte ein Wort.


Anmelden zum Antworten