AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

(C++): Konstante Methoden

Ein Thema von Pseudemys Nelsoni · begonnen am 11. Aug 2004 · letzter Beitrag vom 16. Aug 2004
Antwort Antwort
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

(C++): Konstante Methoden

  Alt 11. Aug 2004, 11:59
Moin moin,

in C++ sollte man ja Methoden die das Objekt nicht ändern immer als Konstant deklarieren.
Nun frage ich mich wieso man das überhaupt sollte? Ich meine es geht ja alles auch wunderbar wenn sie nicht konstant sind.
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: (C++): Konstante Methoden

  Alt 11. Aug 2004, 12:05
Konstante Methoden sind dafür zuständig Klassenvariablen zu ändern (werden u.a. auch Klassenmethoden genannt). Diese Methoden kannst Du auch verwenden, ohne eine Instanz der Klasse zu besitzen.

Der Aufruf:
Code:
CMyClass.ConstMethode()
funktioniert nur mit Konstanten Methoden.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#3

Re: (C++): Konstante Methoden

  Alt 11. Aug 2004, 12:09
Hallo Bernhard,

hmm.... und wenn ich per methode eine elementvariable ändern möchte?

ca sO:

CMyClass.Methode(5)

geht das dann auch nicht? ich meine die ist ja nicht konstant
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: (C++): Konstante Methoden

  Alt 11. Aug 2004, 12:12
Du kannst in Klassenmethoden nur Zugriff auf Klassenvariablen (sind glaube ich auch mit const definiert).
Beidem versuch auf eine "normale" Member-Variable zuzugreifen sollte der Compiler meckern.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#5

Re: (C++): Konstante Methoden

  Alt 11. Aug 2004, 12:14
Hallo bernhard

soweit ich in meinem buchgelesen hab kann eine methode die eine membervariable ändert nie const sein. Deswegen frag ich ja, so richtig kapier ichs nicht *g*
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: (C++): Konstante Methoden

  Alt 11. Aug 2004, 12:22
Da ich schon einige Jahre nichts mehr mit C++ zu tun habe (Jippi) kann ich dir nur mein halb-verkrustetes Wissen übermitteln.
Aber ich bin mir ziemlich sicher das es so ist (Vergleichen mit Delphi kann man es ja nicht, da erst ab D8 Klassenvariablen auch bei Delphi möglich sind.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#7

Re: (C++): Konstante Methoden

  Alt 11. Aug 2004, 17:27
vielleicht wissen andere ja noch was danke dir aber
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Dannyboy

Registriert seit: 4. Aug 2003
Ort: Delphi-Heaven
418 Beiträge
 
Delphi 7 Personal
 
#8

Re: (C++): Konstante Methoden

  Alt 16. Aug 2004, 14:19
Servus,
wie ich das hier interpretiere, schreibt ihr von unterschiedlichen Dingen.
Das liegt daran, dass der Begriff "konstante Methoden" Interpretationsmöglichkeiten
übrig lässt. Einer schreibt von konstanten Methoden, der andere von statischen Methoden.
Dies sind in C++ zwei völlig unterschiedliche Dinge.Wenn ich das richitg in Erinnerung habe,
war das folgendermaßen:

Statische Methoden mit dem Präfix <static> stellen Klassenmethoden dar. Mit diesen
Klassenmethoden können nur Klassenvariablen geändert werden. Eignet sich zum Beispiel
zum Zählen der erstellten Objekte einer Klasse. Ich versuch's mal zu erklären (ungetestet):
Code:
class MyClass {
      private:
        static int count;       // Präfix STATIC !
      public:
        static int newObject(); // Präfix STATIC !
};

static int MyClass::newObject(); {
       count++;      // Hochzählen des Klassenattributes
}
Konstante Methoden (Postfix const) sind Methoden, durch die die Attribute (Eigenschaften) einer
Klasse nicht geändert werden dürfen, d.h. der Compiler würde es verbieten. Das hat den Sinn,
dass der Entwickler bei einem Getter (eine Nur-Lese-Methode) nicht versehdendlich ein
Attribut der Klasse ändert. Ich versuch' auch hier mal das zu erläutern (ungetestet):
Code:
class MyClass {
  private:
    int wichtigerWert;
  public:
    int lies_Wichtigen_Wert(); const; // Postfix CONST !
};

int MyClass::lies_Wichtigen_Wert(); const; {
  wichtigerWert = 5; // unmöglich, denn Methode darf keine Attribute ändern !!!
  return wichtigerWert;
};
Check this out.
DANNYBOY
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz