Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Methode im Konstruktor verwendbar???

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
19.02.2006, 14:16 Uhr
Karldin Shinowa
Professional Noob


kann ich im konstruktor eine Elementfunktion der klasse verwenden?

also:

C++:
   (*this).nameSchalter                        =false;
   (*this).geburtsmonatSchalter             =false;
   (*this).geburtstagSchalter                 =false;
   (*this).herkunftslandSchalter              =false;
   (*this).wohnortSchalter                     =false;
   (*this).charakternameSchalter[0]        =false;
   (*this).charakterklasseSchalter[0]       =false;
   (*this).charakternameSchalter[1]        =false;
   (*this).charakterklasseSchalter[1]       =false;
   (*this).charakternameSchalter[2]        =false;
   (*this).charakterklasseSchalter[2]       =false;
   (*this).charakternameSchalter[3]        =false;
   (*this).charakterklasseSchalter[3]       =false;
   (*this).hauptSchalter                        =false;



durch


C++:
(*this).SetAllSchalter(false);



ersetzen?


und soll ich in den methoden eher auch die Get und Set Methoden verwenden:
zB


C++:
name="Mario";
//oder
SetName("Mario");



wenn ja auch im konstruktor?
--
Ich will die Welt verbessern, doch Gott gibt mir nicht den Code.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
19.02.2006, 19:42 Uhr
Spacelord
Hoffnungsloser Fall



Zitat von Karldin Shinowa:
kann ich im konstruktor eine Elementfunktion der klasse verwenden?


Ja das geht.Das hättest du aber auch durch ausprobieren herausfinden können.
Logischerweise darf die Methode aber nicht voraussetzen das spezielle Attribute schon initialisiert sind.


Zitat von Karldin Shinowa:

und soll ich in den methoden eher auch die Get und Set Methoden verwenden:


Auch das könntest du,allerdings ist das schlecht für die Performance.
Jeder Methodenaufruf bringt nunmal einen gewissen Aufwand mit sich.
Die Get/Set Methoden sind gedacht um die Implementierung deiner Klasse vor dem Klassenbenutzer zu verbergen und um gewährleisten zu können dass den Attributen deiner Klasse nur Werte zugewiesen werden können die die Klasse in einem zulässigen Zustand hinterlassen.
Bei der Implementierung musst du imho schon selber darauf achten dass deine Klasse das macht was sie soll .



Bearbeitung von Spacelord:
PS: Du kannst übrigens auch this->Attribut/Methode anstelle von (*this). schreiben.
Genau genommen brauchst du im Regelfall this garnicht anzugeben und kannst direkt auf die Methoden etc zugreifen.Die Variante mit der dereferenzierung die du nutzt ist auf jeden Fall eher "unüblich".


MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.

Dieser Post wurde am 19.02.2006 um 19:47 Uhr von Spacelord editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
19.02.2006, 21:15 Uhr
Karldin Shinowa
Professional Noob


ich weiß vieles was du mir gesagt hast.....
(*this). find ich aussagekräftiger als -> und this bei setmethoden und konstruktor hab ich mir angewöhnt weil zB:


C++:
SetName(string name)
{
(*this).name=name;//name=name würde er falsch interpretieren
}



und wenn ich eh schon eine Methode hab(die ich woanders auch brauch) mit der ich mir eine lange unübersichtliche liste von zuweisungen vermeiden kann habe ich mir gedacht dass es sinnvoll ist diese einzusetzen

mfg und thx
--
Ich will die Welt verbessern, doch Gott gibt mir nicht den Code.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
19.02.2006, 22:49 Uhr
Pler
Einer von Vielen
(Operator)


Ich verwende auch immer this, das ist schön praktisch wenn das Fenster aufklappt und man nur noch den enstsprechenden Namen der Mathoder oder so wählen muss.
Hilft auch unnötig viele Tipfehler zu verhindern.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
19.02.2006, 22:52 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat:

(...) brauchst (...) du im Regelfall this garnicht anzugeben



Ansonsten, Set'er im Klassencode verwenden kannst du schon machen. Unser "Prof" meinte, er fände das sehr gut, da wird der Code übersichtlicher - bissige Randbemerkung von mir: "Und da wir ja nett mit Java programmier(t)en: Noch langsamer" - Jedenfalls was ich damit sagen will ist, wenn du keinen Compiler hast der Optimiert, dann vermeide das, ansonsten kannst du das schon tun. ("Selbst" der VC optimiert das in direkte zugriffe raus)
--
class God : public ChuckNorris { };

Dieser Post wurde am 19.02.2006 um 22:53 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
20.02.2006, 07:59 Uhr
Karldin Shinowa
Professional Noob


ich kann die Set und Get ja inline machen. das würde schnelligkeit bringen oder?
--
Ich will die Welt verbessern, doch Gott gibt mir nicht den Code.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
20.02.2006, 09:05 Uhr
(un)wissender
Niveauwart


Kümmer dich nicht darum. Das macht der Compiler sowieso inline, es sei den du verbietest es ihm.
Wichtig zu sagen ist noch, dass du im Konstuktor keine virtuellen Klassenfunktionen aufrufen solltest. Ev. ist die VT noch nicht korrekt aufgebaut und du rufst nicht die richtige Methode auf.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
20.02.2006, 09:13 Uhr
virtual
Sexiest Bit alive
(Operator)



Zitat von FloSoft:

Zitat:

(...) brauchst (...) du im Regelfall this garnicht anzugeben



Ansonsten, Set'er im Klassencode verwenden kannst du schon machen. Unser "Prof" meinte, er fände das sehr gut, da wird der Code übersichtlicher - bissige Randbemerkung von mir: "Und da wir ja nett mit Java programmier(t)en: Noch langsamer" - Jedenfalls was ich damit sagen will ist, wenn du keinen Compiler hast der Optimiert, dann vermeide das, ansonsten kannst du das schon tun. ("Selbst" der VC optimiert das in direkte zugriffe raus)


Sorry, aber ob Du nun this verwendest oder nicht, ist performancetechnisch überhaupt kein Unterschied. Daß Du this fortlassen kannst ist ein Feature der C++ oder eben Java grammatik und wird vom Compiler bei Fortlassung hinzugedichtet.
Dokumentationstechnisch kann der Unterschied schon gewaltig sein und da würde ich der Argumentation Deines Profs folgen

P.S:
Und - um hier Missverständnissen vorzubeugen: es macht performancetechnich ebenfalls keinen Unterschied, ob man "(*this)." oder "this->" schreibt, allerdings hat sich die zweite Schreibweise durchgesetzt, weil sie von 99% der Entwickler als übersichtlicher angesehen wird.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 20.02.2006 um 09:16 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
20.02.2006, 09:33 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)



Zitat von FloSoft:


Ansonsten, Set'er im Klassencode verwenden kannst du schon machen. Unser "Prof" meinte, er fände das sehr gut...

Ich glaub Flo meinte nicht this mit der Performance

Dieser Post wurde am 20.02.2006 um 09:33 Uhr von Guybrush Threepwood editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
20.02.2006, 09:36 Uhr
(un)wissender
Niveauwart


Die andere Möglichkeit ist aber auch "Blödsinn" .
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: