Mehrere Fragen zu Klassen



  • Hallo,
    ich hätte mal ein paar Fragen zu Klassen:
    Ich muss den =-Operator überladen. Was gibt der Normalerweise zurück als Wert???
    Ich habe jetzt schon in der Klasse mit einem Array gearbeitet. Wie kann ich das
    vergroeßern???

    class bla {
    private:
       int* m_zahlen;
       int m_anzZahlen;
    
    public:
       bla(anzZahlen = 1) {
          m_anzZahlen = anzZahlen;
          m_zahlen = new int[m_anzZahlen];
       }
    
       ~bla() {
          delete [] m_zahlen;
       }
    
       void vergroessern(int size) {
          // Array soll jetzt vergrößert werden
       }
    };
    

    Ps: Was muss man den alles für Operatoren überladen, damit man richtig mit
    Zahlen arbeiten kann??? (Vergleichsoperatoren, Arithmetische Operatoren usw???)



  • D schrieb:

    Ich muss den =-Operator überladen. Was gibt der Normalerweise zurück als Wert???

    Eine Referenz auf das Objekt selbst

    Ich habe jetzt schon in der Klasse mit einem Array gearbeitet. Wie kann ich das
    vergroeßern???

    So wie du es hier hast, indem du mit new[] einen größeren Speicherberecih holst, deine alten Werte da reinkopierst und das alte Array mit delete[] löschst.

    Ps: Was muss man den alles für Operatoren überladen, damit man richtig mit
    Zahlen arbeiten kann??? (Vergleichsoperatoren, Arithmetische Operatoren usw???)

    Kommt drauf an, was du unter "mit Zahlen arbeiten" verstehst. Die Antwort lautet: alles was du brauchst und was für deine Klasse Sinn macht.



  • Kurze Frage noch mal:
    Wie mache ich das, dass ich eine Funktion (o.ä.) habe, die dann meine Klasse
    in einen int wandelt???



  • D schrieb:

    Kurze Frage noch mal:
    Wie mache ich das, dass ich eine Funktion (o.ä.) habe, die dann meine Klasse
    in einen int wandelt???

    Normalerweise ist der beste Weg, dafür eine Funktion bereitzustellen:

    int to_int() const { return einen_wert; }
    

    Wenn die Konversion automatisch ablaufen will, kann man einen impliziten Konversionsoperator erstellen:

    operator int() const { return einen_wert; }
    

    Vorsicht mit Letzterem: Bei „fahrlässiger“ Benutzung kann sowas zu vielen schwer zu findenden Bugs führen, weil hierdurch natürlich die Compiler-Typenprüfung teilweise umgangen wird.


Anmelden zum Antworten