Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 13:30

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



(dringend)abstrakte klassen frage

Discussion on (dringend)abstrakte klassen frage within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Oct 2007
Posts: 856
Received Thanks: 35
(dringend)abstrakte klassen frage

hey leute,
habe morgen früh eine mündliche prüfung in c++ und eigentlich dachte ich vom vorwissen ausm internet das eine klasse abstakt ist sobald es eine pure virtuelle methode gibt, nun hab ich eben das skript vom prof durchgeschaut und dort steht folgendes:
1.2.1 Abstrakte Klassen
- weisen mindestens eine abstrakte Methode auf
- können nicht instanziert werden
- abstrakte Methoden haben nur die Schnittstellendefinition
(Signatur, Prototyp), keinen Code!

Beispiel der Verwendung für abstrakte Klassen:
Code:
class AllGO{
int linetype; int linewidth;
public: void draw();
};
class Dreieck:AllGO{
point p1, p2, p3;
public: void draw(){…} …
};
class Viereck:AllGO{
point p1, p2, p3, p4;
public: void draw(){…} …
};
wasn nun? liegt der prof falsch oder wieso steht es im internet überall anders?
ausserdem kann man für pure virtuelle funktionen ja auch einen code haben(zwar nicht beim prototyp aber ausserhalb der klasse dann)

meine 2. frage ist, wenn man eine abstrakte klasse hat mit dynamischen attributen, wo sollte delete benutzt werden um den speicher der attribute frei zugeben? im destrukter der abstrakten klasse oder die klasse, die von ihr abgeleitet wurde?
Slade100 is offline  
Old 12/17/2015, 10:21   #2
 
Shadow992's Avatar
 
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,878
Quote:
Originally Posted by Slade100 View Post
hey leute,
habe morgen früh eine mündliche prüfung in c++ und eigentlich dachte ich vom vorwissen ausm internet das eine klasse abstakt ist sobald es eine pure virtuelle methode gibt, nun hab ich eben das skript vom prof durchgeschaut und dort steht folgendes:
1.2.1 Abstrakte Klassen
- weisen mindestens eine abstrakte Methode auf
- können nicht instanziert werden
- abstrakte Methoden haben nur die Schnittstellendefinition
(Signatur, Prototyp), keinen Code!

Beispiel der Verwendung für abstrakte Klassen:
Code:
class AllGO{
int linetype; int linewidth;
public: void draw();
};
class Dreieck:AllGO{
point p1, p2, p3;
public: void draw(){…} …
};
class Viereck:AllGO{
point p1, p2, p3, p4;
public: void draw(){…} …
};
wasn nun? liegt der prof falsch oder wieso steht es im internet überall anders?
ausserdem kann man für pure virtuelle funktionen ja auch einen code haben(zwar nicht beim prototyp aber ausserhalb der klasse dann)

meine 2. frage ist, wenn man eine abstrakte klasse hat mit dynamischen attributen, wo sollte delete benutzt werden um den speicher der attribute frei zugeben? im destrukter der abstrakten klasse oder die klasse, die von ihr abgeleitet wurde?
@2
Quote:
Kaskadierende Konstruktoren
Bevor der Konstruktor einer abgeleiteten Klasse ausgeführt wird, wird immer der Konstruktor der Basisklasse gestartet. Umgekehrt ist es beim Destruktor. Hier wird der Destruktor der Basisklasse zuletzt aufgerufen. Dieses Verhalten ist logisch, da abgeleitete Klassen auf den Eigenschaften der Basisklassen aufbauen. Entsprechend muss das Basisobjekt konstruiert sein, bevor der Konstruktor der abgeleiteten Klasse aufgerufen wird. Entsprechendes gilt beim Destruktor. Der Destruktor der Basisklasse muss zuletzt aufgerufen werden, damit das Basisobjekt nicht bereits zerstört ist, wenn die abgeleitete Klasse noch versucht, die Erweiterungen freizugeben.

Quelle:
Das heißt du kannst/solltest die "dynamische" Attribute (klingt für mich etwas komisch, besser "dynamisch angeforderte Attribute" oder noch besser "auf dem Heap liegende Daten") so weit oben wie möglich löschen lassen bzw. auf derselben Ebene wie sie angefordert werden.

@1
Ich glaube der Prof hat veraltetes Wissen.
Wenn ich mich richtig erinnere war es in C++98 nicht möglich virtual Methoden zu implementieren (aber wie gesagt sicher bin ich mir nicht, kurzes googlen hat mir auch nicht wirklich gezeigt wie es in C++98 war).

Sollte es in C++98 doch möglich gewesen sein, wird er wohl an Java gedacht haben. Wobei auch dort ist es nicht richtig, weil seine Aussage nur für Interfaces gilt.

Alles in allem:
Irgendetwas passt an seiner Aussage nicht, der Sinn von abstrakten Klassen ist es ja unter anderem, dass man Methoden in der entsprechenden Superklasse implementieren kann und diese dann vererben kann ohne große Probleme.
Er scheint also etwas verwechselt zu haben.
Shadow992 is offline  
Thanks
1 User
Reply


Similar Threads Similar Threads
Klassen Frage
09/24/2013 - Tera - 6 Replies
Hallo Epvp, ich habe mir das Spiel geladen und stehe nun vor der Frage welche Klasse und Welches Volk ich nehmen soll. Da habe ich ein paar Fragen, kann man alle zu jedem Volk auch jede Klasse nehmen? Möchte gerne den Popori nehmen, kann ich ich den als Berserker Spielen oder ist es als Mystiker besser, da sein Bild bei Mystiker abgebildet ist. Bzw. was wären Vor -und Nachteile zwischen Berserker und Mystiker?
[C++]Abstrakte Klassen
07/06/2012 - C/C++ - 3 Replies
Hallo zusammen. bin heute beim Durchblättern durch ältere Kapitel meines C++ Buches auf Abstrakte Klassen gestoßen. Hab das Kapitel wahrscheinlich nicht besonders gründlich gelesen, weil mir der Begriff nicht geläufig war. Habs mir also mal durchgelesen und habe dazu eine Verständnisfrage. Wofür werden abstrakte Klassen benötigt? Ist es sozusagen eine Klasse mit verallgemeinerten Funktionen, die von "gleichartigen" abgeleiteten Klassen benutzt wird quasi wie ein Template ohne Funktion?(ich...
Frage zu Klassen
11/03/2011 - Aion - 15 Replies
Ich hätte eine Frage und zwar welche Klasse bringt denn am meisten Spaß und wird nicht so schnell Langweilig? Danke im vorraus
[Tutorial] Abstrakte Signatur
11/03/2010 - Artist Tutorials - 11 Replies
TUTORIAL - ABSTRAKTE SIGNATUR by Lizzaran http://img834.imageshack.us/img834/8162/out2.jpg http://img717.imageshack.us/img717/3724/out1z.jpg http://img689.imageshack.us/img689/4758/out0.jpg
Bitte ich brauch dringend hilfe bei der klassen auswahl.. =)
08/18/2010 - World of Warcraft - 8 Replies
Also Leute... Ich hab jetzt echt schon vielzulange wow gespielt um zu sagen " ich weiß nicht welche klasse ich spielen soll =)" Also ich Pendle grade zwischen Schurke und Priester.. Wovon ich mich schon verabschiedet hab is: Krieger, dudu | naja ich will eher Raiden als aufs schlachtfeld zu gehen.. also eher pve.. Ich möchte nur Damage dealen und nochmal Damage dealen..



All times are GMT +1. The time now is 13:32.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.