Default value.
If you call it as Obj.funcC() , it will be interpreted as Obj.funcC(0.0) .
In short, read what the default values of the function arguments are - for example, here .
There is no name for the variable - because it may simply be reserved or not needed. For example, in the successor it can be necessary. And in the base class it is not needed.
struct Base { virtual void out(double = 0.0) { cout << "Base::out\n"; } }; struct Derived: public Base { virtual void out(double x) { cout << "Drived::out " << x << "\n"; } }; int main(int argc, const char * argv[]) { Base * b = new Derived; b->out(); // Тут вызовется out() из Derived со значением 0.0 b->out(3); // Тут - со значением 3.0 }
The name of the argument in Base is not needed - it is not used, and is needed only to provide a signature.
If you enter a name, the compiler will fairly note that the name is, but is not used. Here - he will keep silent.