Verwenden von Standardparametern für Funktionen in C++
- Verwenden Sie Standardparameter, um eine Funktion in C++ zu definieren
- Standardparameter zur Implementierung von Klassenkonstruktoren in C++ verwenden
In diesem Artikel werden verschiedene Methoden zur Verwendung von Standardparametern für Funktionen in C++ erläutert.
Verwenden Sie Standardparameter, um eine Funktion in C++ zu definieren
Das Konzept der Standardparameter ermöglicht es, Standardargumentwerte in einer Funktionsdefinition anzugeben, die verwendet wird, falls der Benutzer an seiner Stelle kein Argument übergibt. Daher können Funktionen optionale Argumente haben, die intern einen Standardwert verwenden können, um einige Objekte während des Funktionsblocks zu initialisieren. Standardparameter werden in einem Funktionsprototyp nach jedem Argumentnamen mit dem Symbol =
und dem entsprechenden Wert angegeben. Beispielsweise implementiert das folgende Codefragment eine Funktionsvorlage sumNumbers
, die höchstens vier Zahlen summieren kann. Der Benutzer muss jedoch nicht alle vier Werte angeben. Im Gegenteil, nur zwei ganze Zahlen reichen für die Operation aus.
#include <iostream>
#include <string>
#include <utility>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;
template <typename T>
T sumNumbers(T x, T y, T z = 0, T w = 0) {
return (x + y + z + w);
}
int main() {
vector<int> vec = {1, 4, 8, 16, 20, 24, 28, 32};
for (size_t i = 0; i < vec.size(); ++i) {
cout << sumNumbers(vec[i], vec[i + 1]) << ": ";
}
cout << endl;
for (size_t i = 0; i < vec.size(); ++i) {
cout << sumNumbers(vec[i], vec[i + 1], vec[i + 2]) << ": ";
}
cout << endl;
for (size_t i = 0; i < vec.size(); ++i) {
cout << sumNumbers(vec[i], vec[i + 1], vec[i + 2], vec[i + 3]) << ": ";
}
cout << endl;
return EXIT_SUCCESS;
}
Ausgabe:
5: 12: 24: 36: 44: 52: 60: 32
13: 28: 44: 60: 72: 84: 60: 32:
29: 48: 68: 88: 104: 84: 60: 4145:
Standardparameter zur Implementierung von Klassenkonstruktoren in C++ verwenden
Ein weiteres nützliches Szenario, in dem das Konzept der Standardparameter verwendet werden kann, ist der Klassenkonstruktor. Manchmal müssen die Klassenkonstruktoren einige Datenelemente mit Standardwerten initialisieren, wenn der Benutzer die Argumente nicht bereitstellt. Wir können einen Konstruktor mit den Standardparametern implementieren, der einen anderen Konstruktor mit Standardwerten aufruft, wie im folgenden Beispielcode gezeigt.
#include <iostream>
#include <string>
#include <utility>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;
class MyClass {
string name;
int height;
int width;
public:
MyClass(string s, int h, int w) : name(std::move(s)), height(h), width(w) {}
MyClass() : MyClass("", 0, 0) {}
explicit MyClass(string s) : MyClass(std::move(s), 0, 0) {}
void printMyClass() {
cout << "name: " << name << endl
<< "height: " << height << endl
<< "width: " << width << endl;
}
};
int main() {
MyClass M1;
MyClass M2("Jay", 12, 103);
M1.printMyClass();
cout << endl;
M2.printMyClass();
return EXIT_SUCCESS;
}
Ausgabe:
name:
height: 0
width: 0
name: Jay
height: 12
width: 103
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook