Usa i parametri predefiniti per le funzioni in C++

Jinku Hu 12 ottobre 2023
  1. Utilizzare i parametri predefiniti per definire una funzione in C++
  2. Utilizzare i parametri predefiniti per implementare il costruttore di classi in C++
Usa i parametri predefiniti per le funzioni in C++

Questo articolo spiegherà diversi metodi su come utilizzare i parametri predefiniti per le funzioni in C++.

Utilizzare i parametri predefiniti per definire una funzione in C++

Il concetto di parametri di default rende possibile avere valori di argomento di default specificati in una definizione di funzione usata nel caso in cui l’utente non passi alcun argomento al loro posto. Pertanto, le funzioni possono avere argomenti opzionali, che internamente possono utilizzare un valore predefinito per inizializzare alcuni oggetti durante il blocco funzione. I parametri predefiniti sono specificati in un prototipo di funzione dopo ogni nome di argomento utilizzando il simbolo = e il valore corrispondente. Ad esempio, il seguente frammento di codice implementa un modello di funzione sumNumbers che può sommare al massimo quattro numeri. Tuttavia, l’utente non è tenuto a fornire tutti e quattro i valori. Al contrario, solo due interi sono sufficienti per l’operazione.

#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;
}

Produzione:

5: 12: 24: 36: 44: 52: 60: 32
13: 28: 44: 60: 72: 84: 60: 32:
29: 48: 68: 88: 104: 84: 60: 4145:

Utilizzare i parametri predefiniti per implementare il costruttore di classi in C++

Un altro utile scenario in cui è possibile utilizzare il concetto di parametri predefiniti è il costruttore di classi. A volte, i costruttori di classi potrebbero dover inizializzare alcuni membri dati con valori predefiniti se l’utente non fornisce gli argomenti. Possiamo implementare un costruttore con i parametri predefiniti, che chiama un altro costruttore con valori predefiniti, come dimostrato nel codice di esempio seguente.

#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;
}

Produzione:

name:
height: 0
width: 0


name: Jay
height: 12
width: 103
Autore: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

Articolo correlato - C++ Function