Standardwerte für Parameter
In der vorigen Übung hast du gesehen, dass sich ein Aufruf mit fehlendem Argument nicht kompilieren lässt. Oft gibt es aber einen Wert, der in den meisten Fällen passt, und wir wollen nur hin und wieder einen anderen übergeben. Die meisten Leute bestellen zum Beispiel einen mittleren Kaffee. Für solche Fälle kann ein Parameter einen Standardwert haben: Schreibe nach dem Namen des Parameters = und den Wert:
#include <iostream>
#include <string>
void bestelleKaffee(std::string getraenk, std::string groesse = "mittel") {
std::cout << getraenk << ", Größe: " << groesse << std::endl;
}
int main() {
bestelleKaffee("Latte", "groß");
bestelleKaffee("Espresso");
}Dieses Programm gibt aus:
Latte, Größe: groß
Espresso, Größe: mittelÜbergibt der Aufruf ein Argument für groesse, verwendet die Funktion es. Tut er es nicht, verwendet die Funktion den Standardwert "mittel". Ohne den Standardwert ließe sich der zweite Aufruf nicht kompilieren, weil ihm ein Argument fehlen würde.
Die Argumente gehen der Reihe nach in die Parameter, deshalb gehören Parameter mit Standardwerten ans Ende. Dann kannst du die letzten Argumente weglassen, und die, die du übergibst, landen trotzdem in den richtigen Parametern. C++ erlaubt nach einem Parameter mit Standardwert nicht einmal einen Parameter ohne Standardwert:
void bestelleKaffee(std::string groesse = "mittel", std::string getraenk) {Ein solches Programm lässt sich nicht kompilieren. Der Fehler error: missing default argument on parameter 'getraenk' sagt, dass dem Parameter getraenk ein Standardwert fehlt: Hat ein Parameter einen Standardwert, müssen auch alle Parameter nach ihm einen haben.
So schreibst du es:
Anweisungen
- 1
Unser Shop gibt die meisten Preise in Euro an, deshalb übergibt der letzte Aufruf in
mainnur den Preis. Darum lässt sich das Programm nicht kompilieren. Gib dem Parameterwaehrungden Standardwert"EUR". Das Programm gibt dann drei Preise aus, und der letzte istPreis: 80 EUR. - 2
Erstelle unter der Funktion
gibPreisAuseine FunktiongibLinieAusmit zwei Parametern:laengevom Typintundzeichenvom Typcharmit dem Standardwert'-'. Die Funktion gibtzeichenso oft aus, wielaengeangibt, alles in einer Zeile: Gib in einerfor-Schleife nurzeichenaus und beende die Zeile nach der Schleife. - 3
Rufe am Ende von
maingibLinieAus(10)und danngibLinieAus(5, '*')auf. Unter den Preisen gibt das Programm eine Linie aus zehn Strichen und darunter fünf Sterne aus:---------- *****