Positionella och standardargument
Svep för att visa menyn
Positionella argument
Positionella argument är ett sätt att skicka värden till en funktion i en specifik ordning baserat på funktionens signatur. Värdena kopplas till parametrar enligt deras positioner i funktionssignaturens parameterlista. Varje arguments position avgör vilken parameter det motsvarar.
main.cpp
1234567891011121314151617181920#include <iostream> // Function that takes two positional arguments float divide(float a, float b) { if (b == 0) return 0; return a / b; } int main() { float x = 8; float y = 4; // Calling the 'divide' function with two positional arguments float result = divide(x, y); std::cout << result << std::endl; }
Du kan göra ett litet experiment: ändra ordningen på argumenten som skickas till funktionen (använd divide (y, x) istället för divide(x, y)), och du kommer att se att resultatet har förändrats. Detta är själva kärnan i positionella argument: ordningen på parametrarna som skickas till funktionen är viktig och påverkar direkt dess resultat.
Standardargument
Standardargument gör det möjligt att tilldela standardvärden till funktionsparametrar. Om en funktion anropas utan att alla argument anges, används standardvärdena för de som saknas. För att ange ett standardvärde, tilldela helt enkelt ett värde direkt i funktionsdeklarationen.
main.cpp
12345678910111213141516171819202122#include <iostream> // Default value is set for the third parameter float divide(float a, float b, bool terminate = true) { if (b == 0) { if (terminate) return 0; return a / 0.000001; // Prevent crash by using a very small number } return a / b; } int main() { std::cout << divide(10, 2) << std::endl; // Normal division std::cout << divide(10, 0) << std::endl; // Default behavior (error) std::cout << divide(10, 0, false) << std::endl; // Forced division }
Funktionen divide() dividerar ett tal med ett annat.
Om nämnaren (b) är noll:
terminate = true→ returnerar0terminate = false→ dividerar med ett mycket litet tal för att undvika fel
Parametern terminate har standardvärdet true, så den kan utelämnas. Ange terminate = false för att fortsätta beräkningen istället för att avbryta.
Det är viktigt att alla standardargument placeras efter de positionella i parameterlistan. Annars kommer kompilatorn att ge ett felmeddelande.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal