In deze zelfstudie leren we de standaardargumenten van C ++ en hun werking met behulp van voorbeelden.
In C ++ - programmering kunnen we standaardwaarden voor functieparameters opgeven.
Als een functie met standaardargumenten wordt aangeroepen zonder argumenten door te geven, worden de standaardparameters gebruikt.
Als er echter argumenten worden doorgegeven tijdens het aanroepen van de functie, worden de standaardargumenten genegeerd.
Werken met standaardargumenten

We kunnen de werking van standaardargumenten uit de bovenstaande afbeelding begrijpen:
- Wanneer
temp()
wordt aangeroepen, worden beide standaardparameters gebruikt door de functie. - Wanneer
temp(6)
wordt aangeroepen, wordt het eerste argument6
terwijl de standaardwaarde wordt gebruikt voor de tweede parameter. - Wanneer
temp(6, -2.3)
wordt aangeroepen, worden beide standaardparameters overschreven, wat resulteert ini = 6
enf = -2.3
. - Wanneer
temp(3.4)
wordt doorgegeven, gedraagt de functie zich op een ongewenste manier omdat het tweede argument niet kan worden doorgegeven zonder het eerste argument.
Daarom3.4
wordt doorgegeven als het eerste argument. Aangezien het eerste argument is gedefinieerd alsint
, is de waarde die daadwerkelijk wordt doorgegeven3
.
Voorbeeld: standaardargument
#include using namespace std; // defining the default arguments void display(char = '*', int = 3); int main() ( int count = 5; cout << "No argument passed: "; // *, 3 will be parameters display(); cout << "First argument passed: "; // #, 3 will be parameters display('#'); cout << "Both arguments passed: "; // $, 5 will be parameters display('$', count); return 0; ) void display(char c, int count) ( for(int i = 1; i <= count; ++i) ( cout << c; ) cout << endl; )
Uitvoer
Geen argument doorgegeven: *** Eerste argument doorgegeven: ### Beide argumenten doorgegeven: $$$$$
Hier is hoe dit programma werkt:
display()
wordt aangeroepen zonder argumenten door te geven.display()
Gebruikt in dit geval zowel de standaardparametersc = '*'
alsn = 1
.display('#')
wordt aangeroepen met slechts één argument. In dit geval wordt de eerste'#'
. De tweede standaardparametern = 1
blijft behouden.display('#', count)
wordt aangeroepen met beide argumenten. In dit geval worden geen standaardargumenten gebruikt.
We kunnen ook de standaardparameters in de functiedefinitie zelf definiëren. Het onderstaande programma is gelijk aan het bovenstaande.
#include using namespace std; // defining the default arguments void display(char c = '*', int count = 3) ( for(int i = 1; i <= count; ++i) ( cout << c; ) cout << endl; ) int main() ( int count = 5; cout << "No argument passed: "; // *, 3 will be parameters display(); cout << "First argument passed: "; // #, 3 will be parameters display('#'); cout << "Both argument passed: "; // $, 5 will be parameters display('$', count); return 0; )
Dingen om te onthouden
- Zodra we een standaardwaarde voor een parameter hebben opgegeven, moeten alle volgende parameters ook standaardwaarden hebben. Bijvoorbeeld,
// Invalid void add(int a, int b = 3, int c, int d); // Invalid void add(int a, int b = 3, int c, int d = 4); // Valid void add(int a, int c, int b = 3, int d = 4);
- Als we de standaardargumenten in de functiedefinitie definiëren in plaats van het functieprototype, dan moet de functie worden gedefinieerd vóór de functieaanroep.
// Invalid code int main() ( // function call display(); ) void display(char c = '*', int count = 5) ( // code )