minhas informações de contato
Correspondência[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Bem-vindos a todos ao blog do Pirate Cat Ou——
Depois de uma longa pausa, continuemos estudando muito!
Índice
O valor de existência do namespace:
Definição de espaço para nome:
2. Funções de entrada e saída C++
Em C/C++, há um grande número de variáveis, funções e classes a serem aprendidas posteriormente. Os nomes dessas variáveis, funções e classes existirão no escopo global, o que pode causar muitos conflitos.O objetivo do uso de namespaces é localizar nomes de identificadores para evitar conflitos de nomenclatura ou poluição de nomes. A palavra-chave namespace parece resolver esse problema.
Em suma, quando existem múltiplas variáveis com o mesmo nome no mesmo projeto, isso pode evitar conflitos de nomenclatura ou poluição de nomes, além de facilitar a distinção. Pode-se dizer que é indispensável no desenvolvimento de projetos de grande porte.
Namespace é a palavra-chave do namespace Adicione o nome do namespace após a palavra-chave e adicione {} para limitar o escopo.
namespace hdmo { int a = 1; }Perceber: Não há necessidade de adicionar ' ; ' após o último ' } ' do namespace, que é diferente de uma estrutura e semelhante a uma função.
A essência de um namespace é criar um domínio independente do escopo global. Assim como toda função tem um escopo, o escopo dos parâmetros em cada função está dentro do escopo da função.O mesmo vale para namespaces.O escopo de funções, variáveis, etc. no namespace está dentro do escopo limitado do namespace e precisa ser usado chamando o namespace., mas deve-se notar queVariáveis de função no namespace, etc., têm um ciclo de vida global
O namespace só pode ser definido no escopo global e também pode ser aninhado.
No mesmo projeto, namespaces com o mesmo nome serão considerados o mesmo namespace.
namespace hdmo { int a = 1; } namespace hdmo { int b = 1; }Neste momento, os dois hdmo representam o mesmo namespace.
A biblioteca padrão C++ é armazenada no namespace chamado std (padrão) para evitar conflitos com funções em outras linguagens. É por isso que os programas C++ contêm basicamente um.
using namespace std;
Apenas para incluir a biblioteca padrão C++.
Como um namespace é um domínio, se você quiser usar suas variáveis de função e outros conteúdos externamente, será necessário usar um operador como uma estrutura para realizar esta operação.
O operador de chamada de um namespace tem dois pontos:
#include <stdio.h> namespace hdmo { int a = 1; } int a = 2; int main() { printf("%dn", a); printf("%dn", ::a); printf("%dn", hdmo::a); return 0; }
A partir dos resultados de saída, podemos saber que: quando a frente de :: está vazia, as variáveis do escopo global são chamadas por padrão.
Existem três maneiras de usar variáveis, funções, etc. no namespace:
1.visita única: Utilize :: para acessar individualmente variáveis ou funções em um namespace, que é a forma mais segura de utilizá-lo;
2.Expansão única : Use using para expandir uma variável ou função sozinha. Após a expansão, seu escopo se torna o escopo global e não é mais restrito pelo namespace. Recomenda-se usar este método em condições comuns sem conflito.
3.Totalmente expandido: Expanda diretamente todos os namespaces especificados. Não é recomendado para uso em projetos. O risco de conflito é alto. Pode ser usado em programas pequenos (a biblioteca padrão do C++ é totalmente expandida, portanto, quando usamos cin e. cout, não há necessidade de prefixar std::)
Na linguagem C, nossas instruções de entrada e saída são scanf e printf respectivamente. C++ também é compatível com as instruções de entrada e saída da linguagem C, mas também possui suas próprias funções de entrada e saída, ou seja, cin e cout.
Para usar as funções cin e cout, você deve incluir<iostream>Biblioteca de fluxo de entrada e saída padrão e deve incluir a biblioteca de funções padrão C++
- #include <iostream>
- using namespace std;
Ao usar cin, use '>>' para entrar;
Ao usar cout, use '<<' para gerar.
<< é o operador de inserção de fluxo, >> é o operador de extração de fluxo (<< e >> também representam operadores de deslocamento para a esquerda e deslocamento para a direita na linguagem C)
- #include <iostream>
- using namespace std;
- int main()
- {
- int a = 0;
- cin >> a;
- cout << a << endl;
- printf("%dn", a);
- return 0;
- }
Podemos primeiro entender simplesmente endl como quebra de linha 'n'; a parte básica não será muito explicada e será adicionada em estudos futuros.
Podemos ver no código acima que cin e cout não usam %d, %c, etc. como scanf e printf para controlar o formato de entrada e saída das variáveis.cin e cout podem identificar automaticamente os tipos de variáveis e dados, que é um local relativamente conveniente.
No ambiente VS2022, o código acima não contém<stdio.h> , você também pode usar as funções scanf e prinf, porque no VS<iostream>indiretamente incluído<stdio.h>, portanto pode ser usado diretamente, mas pode precisar ser incluído em outros ambientes de compilação.<stdio.h> .
Quando você deseja obter operações como precisão de controle, é recomendado usar diretamente os métodos de entrada e saída da linguagem C. Será mais problemático implementar esta operação em C++.
Deve-se notar que scanf e printf são mais rápidos que cin e cout. Na competição, scanf e printf podem ser usados diretamente na questão do tempo de execução travado. O código a seguir pode melhorar a eficiência de cin e cout, mas este artigo não. explicação ainda.
- #include <iostream>
- using namespace std;
- int main()
- {
- // 在io需求⽐较⾼的地⽅,如部分⼤量输⼊的竞赛题中,加上以下3⾏代码
- // 可以提⾼C++IO效率
- ios_base::sync_with_stdio(false);
- cin.tie(nullptr);
- cout.tie(nullptr);
- return 0;
- }
Os parâmetros padrão servem para fornecer aos parâmetros de função um valor padrão ao declarar ou definir uma função. Quando chamamos a função, se o parâmetro padrão não passar um valor, o valor padrão definido será usado. será usado.
Os parâmetros padrão são divididos em padrão completo e semi-padrão, padrão completo significa que todos os parâmetros formais recebem valores padrão, e semi-padrão significa que alguns parâmetros formais recebem valores padrão; E o C++ estipula que os parâmetros semi-padrão devem ser padronizados consecutivamente da direita para a esquerda e não podem pular para os valores padrão em intervalos.
- #include <iostream>
- using namespace std;
- namespace hdmo
- {
- //全缺省
- int Fun1(int x = 0, int y = 0)
- {
- return x + y;
- }
- //半缺省
- int Fun2(int x, int y = 0)
- {
- return x + y;
- }
- }
-
- int main()
- {
- cout << hdmo::Fun1() << endl;//全缺省可以不传参
- cout << hdmo::Fun1(1) << endl;
- cout << hdmo::Fun1(1,1) << endl;
- /*
- cout << hdmo::Fun2() << endl;//半缺省不能不传参
- */
- cout << hdmo::Fun2(2) << endl;
- cout << hdmo::Fun2(2,2) << endl;
- return 0;
- }
O resultado do código acima é:
O semi-padrão deve garantir a definição e continuidade dos parâmetros padrão da direita para a esquerda, com os parâmetros normais à esquerda e os parâmetros padrão à direita.
Sobrecarga de função significa que existem várias funções com o mesmo nome de função ao mesmo tempo. O mesmo nome de função representa várias funções ao mesmo tempo, o que é uma sobrecarga.
A diferença entre eles é determinada pelo tipo e número do parâmetro e não tem nada a ver com o tipo do valor de retorno.Duas funções com o mesmo nome que possuem apenas tipos de valores de retorno diferentes não podem ser sobrecarregadas。
- #include <iostream>
- using namespace std;
- namespace hdmo
- {
-
- int Add(int x, int y)
- {
- return x + y;
- }
- double Add(double x, int y)
- {
- return x + y;
- }
- double Add(int x, double y)
- {
- return x + y;
- }
- double Add(double x, double y)
- {
- return x + y;
- }
- }
- int main()
- {
- using hdmo::Add;
- cout << Add(1, 1) << endl;
- cout << Add(1.1, 1) << endl;
- cout << Add(1, 1.1) << endl;
- cout << Add(1.1, 1.1) << endl;
- return 0;
- }
O resultado é:
Pelo código acima, podemos ver que o uso de sobrecarga pode nos fazer usar funções de forma mais conveniente. Na linguagem C, para obter o efeito acima, precisamos usar quatro nomes de funções diferentes para definir quatro funções e usá-los de maneira diferente quando usados. Com sobrecarga em C++, podemos unificar todas as funções de adição, pois não há necessidade de distinguir um nome. ao usá-lo, basta usá-lo diretamente, o que é muito conveniente.
Este artigo sobre os conceitos básicos de introdução ao C++ terminará aqui. Mais tarde, continuaremos a explicar outros conhecimentos básicos.
Se tiver alguma deficiência, pode apontá-la através de mensagem privada ou na área de comentários!
Pagina inicial:Blog do Gato Pirata Ou-CSDN
Aqui está a gaivota! Até a próxima~(*¯︶¯*)~