Funktion überladen - beliebig viele Parameter?



  • Mensch, ich lern ja heut noch richtig was dazu! Und das an einem Samstag 😉

    Also sind PODs quasi alle Objekte, die man benutzen kann, ohne irgendwas zu inkludieren, oder darf man ein int oder so nicht als Objekt bezeichnen?

    (Ich wusste gar net das Strukturen Konstruktoren haben)



  • Strukturen sind in C++ wie Klassen, nur das der default Zugriffsschutz public is.



  • PODs werden auch als Aggregates bezeichnet, das heißt es sind Strukturen ohne benutzdefinierte Konstruktoren, static Elemente, virtuelle Funktionen Basis-Klassen und bei welchen alle Elemente public sind z.B:

    struct A
    {
        int a, b, c;
        float d;
    };
    

    Der einzige Unterschied zwischen einer struct und einer Klasse liegt daran, dass bei einer struct alle Elemente by default public sind, auch bei der Ableitung ist die Zugriffsebene public:

    struct B : A { };
    
    //ist äquivalent zu
    
    class B : public A
    {
    public:
    };
    


  • FAQ



  • kingruedi schrieb:

    Parameter Listen

    Ich bin ja ungern die off-topic-Spaßbremse, aber ich stolpere jedes Mal wieder über deine getrennten Nomen... So etwas gibt es im Deutschen *nie*.

    Weitermachen.
    🙂



  • Shlo schrieb:

    struct B : A { };
    
    //ist äquivalent zu
    
    class B : public A
    {
    public:
    };
    

    also geht mit beiden versionen dann

    void f(struct B b);
    

    ?



  • Wenn man struct weglässt, warum sollte es nicht gehen?



  • operator void schrieb:

    kingruedi schrieb:

    Parameter Listen

    Ich bin ja ungern die off-topic-Spaßbremse, aber ich stolpere jedes Mal wieder über deine getrennten Nomen... So etwas gibt es im Deutschen *nie*.

    Weitermachen.
    🙂

    Nix deutsch 😉 Beim programmieren schreibt man ja eh immer so eine Art Denglisch 😉

    (werd mich versuchen zu bessern)



  • denglisch ist furchbare eine abart ( IMHO )

    wozu überhaupt mit solchen macros arbeiten ?
    man kann doch einfach einen pointer übergeben
    und dann halt um die bytes immer dazuaddieren, um mehrere parameter einzulesen
    z.b.:

    function foo(int anzahl, int* params)
    {
        int s = 0;
        for ( int i = 0; i < anzahl; i++ )
        { 
            s += (*params);
            params += sizeof(int);
        }
        return s;
    }
    

    dann hat man auch die kontrolle über den typ der parameter



  • oder was noch besser ist:

    template <class T*>
    function foo(int anzahl, T params)
    {
        int s = 0;
        for ( int i = 0; i < anzahl; i++ )
        { 
            s += (*params);
            params += sizeof(*T);
        }
        return s;
    }
    

    I love templates 🙂


Anmelden zum Antworten