Namenslose Funktionsparameter



  • Hallo,

    ich Frage mich gerade, wieso C++ so etwas bietet:

    void foo(int)
    {
    }
    int main()
    {
       foo(7);
    }
    

    Wieso sollte man einen Parameter übergeben wollen, den man nicht ansprechen kann? Für welche Situationen ist das sinnvoll?

    Danke im Voraus.



  • Ich weiss nicht woher es wirklich kommt, aber bei Funktionsdeklarationen wird das öfters benutzt (die Definition ist dann benannt). Und man kann es auch dazu benutzen durch Überladung und solchen Dummy Parameter eine Auswahl zu machen.
    Wenn man mit Inline Assembler arbeitet könnte man dennoch auf den Parameter zugreifen.

    Benutze es selbst auch auch nie ohne benannten Parameter.



  • Ein ungenutzer Parameter sollte eine Warnung hervorbringen. Wenn man aber eine bestimmte Signatur einhalten muss, ist das die einzig schöne Möglichkeit dem Compiler zu sagen, dass das schon alles seine Richtigkeit hat.



  • class SpaceEntity
    {
        public:
            virtual bool CanAttack(Category c) const = 0;
            virtual ~SpaceEntity();
    };
    
    class Cruiser : public SpaceEntity
    {
        public:
            virtual bool CanAttack(Category c) const
            {
                return c == Category::Bomber || c == Category::Fighter;
            }
    };
    
    class Transporter : public SpaceEntity
    {
        public:
            virtual bool CanAttack(Category) const
            {
                return false; // kann nichts angreifen
            }
    };
    

Anmelden zum Antworten