Use parâmetros padrão para funções em C++

Jinku Hu 12 outubro 2023
  1. Use parâmetros padrão para definir uma função em C++
  2. Use parâmetros padrão para implementar o construtor de classe em C++
Use parâmetros padrão para funções em C++

Este artigo explicará vários métodos de como usar parâmetros padrão para funções em C++.

Use parâmetros padrão para definir uma função em C++

O conceito de parâmetros padrão torna possível ter valores de argumento padrão especificados em uma definição de função usada caso o usuário não passe nenhum argumento em seus lugares. Assim, as funções podem ter argumentos opcionais, que internamente podem usar algum valor padrão para inicializar alguns objetos durante o bloco de funções. Os parâmetros padrão são especificados em um protótipo de função após cada nome de argumento usando o símbolo = e o valor correspondente. Por exemplo, o fragmento de código a seguir implementa um modelo de função sumNumbers que pode somar quatro números no máximo. No entanto, o usuário não é obrigado a fornecer todos os quatro valores. Ao contrário, apenas dois inteiros são suficientes para a operação.

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

Resultado:

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

Use parâmetros padrão para implementar o construtor de classe em C++

Outro cenário útil onde o conceito de parâmetros padrão pode ser utilizado é o construtor de classe. Às vezes, os construtores de classe podem precisar inicializar alguns membros de dados com valores padrão se o usuário não fornecer os argumentos. Podemos implementar um construtor com os parâmetros padrão, que chama outro construtor com valores padrão, conforme demonstrado no código de exemplo a seguir.

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

Resultado:

name:
height: 0
width: 0


name: Jay
height: 12
width: 103
Autor: 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

Artigo relacionado - C++ Function