A diferença entre argumentos e parâmetros de função em C++
Este artigo explicará as diferenças entre os argumentos e parâmetros da função em C++.
A anatomia das funções em C++
Funções são o bloco de construção comum de qualquer programa relativamente sofisticado. Eles permitem definir as rotinas recorrentes no programa como blocos separados e chamá-los quando o código correspondente precisa ser executado. Dividir um programa em várias funções torna o programa mais modular e fácil de manter e entender. Conseqüentemente, esses programas geralmente são mais fáceis de testar e depurar.
As funções geralmente têm nomes que as identificam de maneira exclusiva; no entanto, alguns conceitos como sobrecarga de função permitem que o programador defina várias funções com o mesmo nome; exploraremos esse recurso nos parágrafos posteriores. Expressões lambda também estão incluídas na combinação, o que fornece uma maneira de definir objetos de função sem nome. A soma de diferentes instruções no bloco de funções é chamada de corpo de função. As funções também têm um tipo de retorno que representa o tipo do valor passado de volta ao chamador.
Outra parte crítica da função é uma lista de parâmetros que denotam as variáveis declaradas como parte da assinatura da função. O chamador geralmente passa alguns valores concretos para inicializar essas variáveis no escopo da função. Os últimos valores são chamados de argumentos e são chamados de inicializadores para os parâmetros da função. Ainda assim, os termos - parâmetros e argumentos podem ser usados indistintamente em alguns contextos.
No programa de exemplo abaixo, mostramos uma função chamada - printVector
, que tem apenas um parâmetro (chamado vec
) definido em sua assinatura. Quando o processo é invocado na função main
, o argumento vec1
é passado para ela. Uma vez que a execução passa para o corpo da função printVector
, o parâmetro vec
é inicializado com o valor correspondente.
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::vector;
template <typename T>
void printVector(const vector<T> &vec) {
for (auto &i : vec) {
cout << i << "; ";
}
cout << endl;
}
int main() {
vector<int> vec1{11, 82, 39, 72, 51, 32, 91};
printVector(vec1);
return EXIT_SUCCESS;
}
Resultado:
11; 82; 39; 72; 51; 32; 91;
Conforme mencionado no capítulo anterior, C++ suporta o conceito de sobrecarga de função, que permite ao programador definir várias funções com o mesmo nome. No entanto, essas funções devem diferir pelo número de argumentos que aceitam ou pelos tipos de argumentos.
O programa a seguir abaixo demonstra o uso básico para funções sobrecarregadas que multiplicam dois números do tipo int
ou double
, respectivamente.
#include <iostream>
using std::cout;
using std::endl;
int multiply(int x, int y) { return x * y; }
double multiply(double x, double y) { return x * y; }
int main() {
int i1 = 10;
double d1 = 0.1;
cout << multiply(i1, i1 + 1) << endl;
cout << multiply(d1, d1 + 1) << endl;
return EXIT_SUCCESS;
}
Resultado:
110
0.11
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