c++cstandards

Why are function argument names unimportant in c++ declarations?


Function argument names in declarations (that most likely reside in the header file) are seemingly completely ignored by the compiler. What are the reasons for allowing the following to compile using either declaration version 1 or 2?


implementation

void A::doStuff(int numElements, float* data)
{
    //stuff
}

declaration - Version 1

class A
{
public:
    void doStuff(int numElements, float* data);
}

declaration - Version 2

class A
{
public:
    void doStuff(int, float*);
}

Solution

  • The compiler only needs to know what kind of arguments the method requires. It's unimportant for the compiler how you call them.

    The compiler needs to know the argument types for several reasons:

    However, I suggest to use the first header version. It helps other developers (and yourself) to use the functions and know what parameters have which meaning.