Defaultparameter

Wenn eine C++-Funktion für einzelne Parameter oft den gleichen Wert bekommt, und nur manchmal ein anderer Wert angegeben wird, dann kann man dafür auch einen Default-Wert setzen. Die Parameter mit einem solchen vordefinierten Wert müssen die letzten sein, und dürfen keine Lücke aufweisen.

Folgende Beispiele sind legal:

int f( char *s, int i = 0 );
int g( char *s, int i = 0, int j = 12 );
int h( char *s = "" );
int i( char * = "" );      // Bei Deklaration kein Name nötig
...
f( "abc" );                // i ist 0.
f( "abc", 12 );            // i ist 12.
g( "abc" );                // i ist 0, j ist 12.
g( "abc", 2 );             // i ist 2, j ist 12.
g( "abc", 2, 30 );         // i ist 2, j ist 30.

Nicht zulässig sind dagegen folgende Beispiele:

int f( int i = 0, int j ); // falsch:
                           // Default-Parameter müssen von hinten
                           // her lückenlos sein!

int g( int i = 0, ... );   // falsch:
                           // Default-Parameter und variable
                           // Parameterlisten vertragen sich nicht!

int i( char *= "" );       // falsch:
                           // *= ist ein Token, deshalb Syntaxfehler!
                           // Hier muß also ein Leerzeichen eingefügt
                           // werden ("*=" -> "* =").

Hier ein vollständiges Beispiel:

// Time-stamp: "(15.11.01 16:10) defargch.cpp [Klaus Wachtler (aw38)]"
//
// demonstriert default-Argumente.

#include <iostream> 

using namespace std;

void h ( const char *s = "abc" )
{
  cout << s << endl;
}

int main( int nargs, char *args[] )
{
  h();        // gibt "abc" aus
  h( "efg" ); // gibt "efg" aus

  return 0;
}
... und die zugehörige Ausgabe:
abc
efg



AnyWare@Wachtler.de