Konstruktor "Auschnitt aus einem Buch"



  • Original aus einem Buch
    Ein Konstruktor wird in den folgenden Situationen automatisch aufgerufen:

    Wenn man ein Objekt durch eine Definition erzeugt. Dabei muss nach dem Namen
    des Objekts eine Liste von Argumenten angegeben werden. ...............

    Beispiel: Mit der Klassendefination
    class C2DPunkt
    {
    double y,y;
    puplic:
    C2DPunkt(double x_)
    {
    //ein Parameter: x-Wert
    x = x_;
    y = y_;
    }

    C2DPunkt(double x_, double y_)
    {
    x = x_;
    y = y_;
    }
    }

    können folgenderma?en Objekte dieser Klasse definiert werden:

    C2DPunkt p(3);
    C2DPuknt q(5,6);
    ............................................................

    ?????Was ist ein Konstruktor????





  • Dieser Thread wurde von Moderator/in Jansen aus dem Forum Borland C++ Builder (VCL/CLX) in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • volkard schrieb:

    http://www.volkard.de/vcppkold/konstruktor.html

    Danke für den Link.

    Noch eine Frage, was heist "Der Konstruktor wird immer aufgerufen, ???wenn
    ein Objekt dieser Klasse erzeugt wird????."

    Gruß
    Johann



  • hermes schrieb:

    Noch eine Frage, was heist "Der Konstruktor wird immer aufgerufen, ???wenn
    ein Objekt dieser Klasse erzeugt wird????."

    Was verstehst du denn da nicht?
    Wenn du ein Objekt einer Klasse anlegst (Beispiel: Class obj;) wird hier automatisch der Konstruktor aufgerufen (in diesem Fall der Standardkonstruktor),
    d.h. es wird der Code aufgerufen, der im Konstruktor steht.
    Lese mal in deinem Buch über Konstruktoren nach oder schau mal bei google.



  • class myClass
    {
        myClass () { cout << "CTOR" << endl; }
        myClass (const myClass& rhs) { cout << "COPY-CTOR" << endl; }
        ~myClass () { cout << "DTOR" << endl; }
    
        myClass& operator = (const myClass& rhs) { cout << "OP=" << endl; return *this; }
    };
    

    Und mit dieser Klasse in einem Programm mal verschiedenste Dinge machen, wie zB, Objekte erstellen, Objekte in einen Block stellen und sie wieder zerstören lassen, kopieren, zuweisen an Funktionen per Value und per Referenz übergeben, etc.

    Dann wirst du sehr schnell sehen wo was implizit aufgerufen wird 🙂

    MfG SideWinder



  • Also ich programmiere zwar mit dem Borland Builder, habe aber noch so meine
    Probleme mit C++.

    Hier meine Klasse RS232, dort gibt es die Funktion
    init_rs232(int baudrate,char com), ich verstehe das mit dem Konstruktor so, wenn ich vergesse die RS232 Schnittstelle zu initialisieren, "init_rs_232(..)"
    sollte der Port COM1 mit 19200 baud initialisiert sein. Würde so etwas der
    Konstruktor übernehmen? Und wenn ja wie würde soetwas aussehen?

    #ifndef rs232H
    #define rs232H
    class Trs232 : public TForm
    {
    private:

    public:
    bool init_rs232(int baudrate,char com);
    bool write_rs232(unsigned char data);
    bool read_rs232(unsigned char* data);
    bool test_comport(char com);
    void close_comport(char port);
    bool write_check(char data,unsigned char* rs_data);
    };
    extern Trs232 *rs232;
    //---------------------------------------------------------------------------
    #endif

    Gruß
    Johann


Anmelden zum Antworten