4 Fragen zu C++



  • Hi,

    hier meine 5 Fragen:

    In dem Buch von B. Stroustrup, wurde in Kapitel 6 ein Taschenrechner entwickelt, in der Main-Funktion wurde so etwas definiert:

    table[pi] = 3.14(...)
    

    was ist das genau? Im Index habe ich TABLE nicht gefunden, wie greift man darauf genau zu, um im Endeffekt 3.14... zu bekommen? Ist es ähnlich wie

    #define PI 3.1.4(..) ?
    

    Für C gibt es ja NCURSES (bitte nicht nach Linux verschieben!!),
    gibt es für C++ etwas ähnliches wie NCURSES, halt mit OO?

    Wozu ist ENUM eigentlich wirklich da? Stroustrup bringt nur ein Beispiel mit

    enum get_token { BLA=';', BLUBB='(' }
    

    und so, für was ist ENUM aber nun echt da?

    Wenn ich z.B mit enum ein:

    enum { EINS='1' }
    

    mache, kann ich später nicht im Code mit

    switch(bla) { case EINS: tuewas... }
    

    nicht zugreifen, da er dann meckert das case nur Zahlen als Argumente haben kann.

    Wenn ich eine CLASS habe, sollte ich gleich in der

    class { /* code */ };
    

    meine daten initalisieren? Bspw habe ich in

    class { private: int a = 12; };
    

    ist das so in Ordnung? Oder sollte ich int a wo anders initalisieren?

    und wenn ich eine Funktion in public habe, z.B

    public: tue_was();
    

    soll ich tue_was(); gleich initalisieren? Also mit

    public: tue_was() {
    cout << "Hallo Foobar"; }
    

    oder ausserhalb der

    class { };
    

    Cu und THX



  • C++-Lerner schrieb:

    In dem Buch von B. Stroustrup, wurde in Kapitel 6 ein Taschenrechner entwickelt, in der Main-Funktion wurde so etwas definiert:

    table[pi] = 3.14(...)
    

    was ist das genau? Im Index habe ich TABLE nicht gefunden, wie greift man darauf genau zu, um im Endeffekt 3.14... zu bekommen? Ist es ähnlich wie

    #define PI 3.1.4(..) ?
    

    der Stroustrup ist fuer Anfaenger eher nicht geeignet. lies lieber etwas anderes, zB Accerlerated C++ oder C++ lernen und professionell anwenden

    table ist array, welches vorher irgendwo definiert wurde (bin zu faul die relevante stelle im stroustrup zu suchen)
    http://www.netcom.com/~tjensen/ptr/pointers.htm

    PI ist bei dir eine konstante, hat mit arrays nix zu tun.

    Für C gibt es ja NCURSES (bitte nicht nach Linux verschieben!!),
    gibt es für C++ etwas ähnliches wie NCURSES, halt mit OO?

    kannst ja immer noch ncurses verwenden...

    bzw. vielleicht interessiert dich: http://tvision.sourceforge.net/
    habs aber selber noch nie verwendet.

    Wozu ist ENUM eigentlich wirklich da? Stroustrup bringt nur ein Beispiel mit

    enum get_token { BLA=';', BLUBB='(' }
    

    und so, für was ist ENUM aber nun echt da?

    Wenn ich z.B mit enum ein:

    enum { EINS='1' }
    

    mache, kann ich später nicht im Code mit

    switch(bla) { case EINS: tuewas... }
    

    nicht zugreifen, da er dann meckert das case nur Zahlen als Argumente haben kann.

    enum == enumeration == aufzaehlung

    zB wenn du
    enum Color { red, green, gray, black };
    hast, kannst du einfacher damit arbeiten als mit int.
    vergleiche:

    Color color=red;
    if(color==green) autsch();
    
    //versus
    int color=7;
    if(color==9) autsch();
    

    natuerlich koennte man statt 7 und 9 const int variablen definieren - aber mit enum geht es einfacher.

    weiters ist enum kein int -> stichwort funktionsueberladung
    ausserdem kann man enum sehr gut bei template metaprogrammierung einsetzen.

    Wenn ich eine CLASS habe, sollte ich gleich in der

    class { /* code */ };
    

    meine daten initalisieren? Bspw habe ich in

    class { private: int a = 12; };
    

    ist das so in Ordnung? Oder sollte ich int a wo anders initalisieren?

    das geht nicht!
    du musst sie im Constructor initialisieren.

    und wenn ich eine Funktion in public habe, z.B

    public: tue_was();
    

    soll ich tue_was(); gleich initalisieren? Also mit

    public: tue_was() {
    cout << "Hallo Foobar"; }
    

    oder ausserhalb der

    class { };
    

    was du meinst, heisst Definition und nicht initialisierung. siehe diesbezueglich mal ins ANSI C Forum, da war gerade ein thread daruber.

    generell lieber den code auslagern und nicht alles in die *.h datei hinein...



  • Zu Pi

    Im Kapitel 6.1.1 Der Parser legt er eine map mit "map<string,double> table" an
    Diese Map nutzt er um Variablen zu speichern.

    Im Hauptprogramm legt er die zwei ersten Eintrage dieser map nämlich "PI" und "e" an,
    damit sie im Taschenrechner zur Verfügung stehen.

    Es würde sich auch lohnen sich mal die hier vorhandenen Tutorials durchzuschauen

    Der Titel is excellent errinnert mich an folgendes
    😃 Die 4 Apostel waren folgende 3 Peter und Paul 😃



  • Lege dieses "tolle" Buch erstmal in die Ecke und fange hier an:
    http://home.arcor.de/cpp_kurs/cpp/toc.htm (sehr gut)
    http://www.volkard.de/vcppkold/inhalt.html (sehr gut, leider alter Header-Stil, macht aber nichts)
    http://www.tutorialpage.de/Cpp2/index.php



  • Erhard Henkes schrieb:

    Lege dieses "tolle" Buch erstmal in die Ecke und fange hier an:
    http://home.arcor.de/cpp_kurs/cpp/toc.htm (sehr gut)
    http://www.volkard.de/vcppkold/inhalt.html (sehr gut, leider alter Header-Stil, macht aber nichts)
    http://www.tutorialpage.de/Cpp2/index.php

    War das "toll" ironisch oder ernst gemeint?
    Weil ich habe bisher nur gutes über den Stroustroup gehört, und lese ihn gerade selbst und bin eigentlich sehr begeistert.



  • Es war im positiven Sinne ersnst gemeint.

    Der Stroustrup und der Kentnissstand von 'C++-Lerner' passen nicht ganz zusammen, deswegen die Empfehlung ein Einsteigerbuch zu nehmen.

    Shade Of Mine: der ist fuer Anfaenger eher nicht geeignet. lies lieber etwas anderes, zB Accerlerated C++ oder C++ lernen und professionell anwenden

    Und es definitiv keine Kritik an diesem Buch


Anmelden zum Antworten