[C++ Essence Shop] 2. Parâmetros padrão e sobrecarga de funções para começar a usar C++

Índice

1. Parâmetros padrão (argumentos padrão)

1.1 Ministério Abrangente

1.2 Semi-padrão

1.3 Declaração e definição de funções com parâmetros padrão

2. Sobrecarga de funções

2.1 Julgamento de sobrecarga de função

2.2 O princípio da sobrecarga de funções - regras de modificação de nomes de funções


1. Parâmetros padrão (argumentos padrão)

        Quando algumas funções são definidas, atribuiremos um valor inicial à lista de parâmetros formais, que chamamos de parâmetro padrão ou parâmetro real padrão. Quando chamamos uma função com um parâmetro padrão, podemos omitir ou não o parâmetro real. Se for omitido, o parâmetro real padrão será usado como seu valor literal por padrão. (O valor padrão deve ser uma constante ou uma variável global)

#include<iostream>
using namespace std;

void print(int a = 0,int b = 1)
{
	cout << a << ' ' << b << endl;
}

int main()
{
	print();
	return 0;
}

Resultado de saída:

0 1 

Do exposto, introduzimos os conceitos de inadimplência total e semi-inadimplência como segue.

1.1 Ministério Abrangente

        Como o nome indica, o padrão completo é fornecer um parâmetro real padrão para todos os parâmetros formais na lista de parâmetros formais, e podemos omitir o parâmetro real ao chamar. Mas quando omitimos, só podemos omitir da direita para a esquerda para evitar causar ambiguidade ao compilador e causar erros.

void print(int a = 1, int b = 1, int c = 1)
{
	cout << a << ' ' << b << ' ' << c << endl;
}
int main()
{
	print(0, 0, 0);
	print(0, 0);
	print(0);
	print();
	return 0;
}

1.2 Semi-padrão

        O semi-padrão é, na verdade, um padrão parcial, que atribui parâmetros reais padrão a alguns parâmetros, mas há uma regra a seguir ao padronizar: todos os parâmetros formais no lado direito de qualquer parâmetro padrão devem ter parâmetros padrão.

void print(int a = 1, int b = 1, int c = 1);
void print(int a, int b = 1, int c = 1);
void print(int a, int b, int c = 1);

1.3 Declaração e definição de funções com parâmetros padrão

        Ao declarar uma função com parâmetros padrão, deve-se observar que se a definição e a declaração forem separadas, os parâmetros padrão deverão ser escritos na declaração.

void print(int a = 1, int b = 1, int c = 1);
void print(int a, int b, int c){}

2. Sobrecarga de funções

2.1 Julgamento de sobrecarga de função

        A sobrecarga de funções é uma sintaxe especial em C++, que permite que várias funções de mesmo nome com funções semelhantes sejam declaradas no mesmo escopo.Lidar com problemas que implementam funções semelhantes, mas de tipos diferentes. (No entanto, deve-se notar que o tipo de retorno da função não é usado como condição de julgamento para sobrecarga de função)

int add(int a,int b)
{
	return a + b;
}
double add(double a, int b)
{
	return a + b;
}
double add(int a, double b)
{
	return a + b;
}

2.2 O princípio da sobrecarga de funções - regras de modificação de nomes de funções

        Na fase de link do nosso programa, o vinculador irá endereçar a função, mas a função sobrecarregada tem o mesmo nome de função, o vinculador não pode saber qual função é chamada, então o compilador modificará o nome da função sobrecarregada, O nome da função regras de modificação de diferentes compiladores são diferentes. As regras de modificação do nome da função do VS no Windows são mais complicadas e não fáceis de entender, enquanto as regras de modificação do nome da função do Linux (_Z + comprimento do nome da função + nome da função + letra inicial do tipo de parâmetro formal ) é relativamente simples e fácil de entender, então tomarei o Linux como exemplo para explicá-lo a você.

         Comparando cuidadosamente a figura acima, podemos ver que no Linux, o gcc modifica o nome da função sobrecarregada, adiciona as informações de tipo do parâmetro da função ao nome modificado e a instrução de chamada também seguirá o endereçamento do nome da função modificada.

Acho que você gosta

Origin blog.csdn.net/qq_64293926/article/details/132087822
Recomendado
Clasificación