2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Willkommen alle im Blog von Pirate Cat Ou——
Lasst uns nach einer langen Pause weiter fleißig lernen!
Inhaltsverzeichnis
Der Existenzwert des Namespace:
2.C++-Eingabe- und Ausgabefunktionen
In C/C++ gibt es eine große Anzahl von Variablen, Funktionen und Klassen, die später erlernt werden müssen. Die Namen dieser Variablen, Funktionen und Klassen sind alle im globalen Bereich vorhanden, was zu vielen Konflikten führen kann.Der Zweck der Verwendung von Namespaces besteht darin, Bezeichnernamen zu lokalisieren, um Namenskonflikte oder Namensverschmutzung zu vermeiden. Das Schlüsselwort namespace scheint dieses Problem zu lösen.
Kurz gesagt: Wenn im selben Projekt mehrere Variablen mit demselben Namen vorhanden sind, kann dies Namenskonflikte oder Namensverschmutzung verhindern und auch die Unterscheidung erleichtern. Man kann sagen, dass es bei der Entwicklung von Großprojekten unverzichtbar ist.
Namespace ist das Schlüsselwort des Namespace. Fügen Sie nach dem Schlüsselwort den Namen des Namespace hinzu und fügen Sie {} hinzu, um den Bereich einzuschränken.
namespace hdmo { int a = 1; }Beachten: Es ist nicht erforderlich, nach dem letzten „}“ des Namensraums ein „;“ hinzuzufügen, das sich von einer Struktur unterscheidet und einer Funktion ähnelt.
Das Wesentliche an einem Namespace ist, dass wir eine Domäne erstellen, die unabhängig vom globalen Geltungsbereich ist. So wie jede Funktion einen Geltungsbereich hat, liegt der Geltungsbereich der Parameter in jeder Funktion innerhalb des Geltungsbereichs der Funktion.Das Gleiche gilt für Namespaces EachDer Umfang der Funktionen, Variablen usw. im Namespace liegt innerhalb des begrenzten Bereichs des Namespace und muss durch Aufrufen des Namespace genutzt werden., aber es sollte beachtet werdenFunktionsvariablen im Namensraum usw. haben einen globalen Lebenszyklus
Namespaces können nur im globalen Bereich definiert und auch verschachtelt werden.
Im selben Projekt werden Namespaces mit demselben Namen als derselbe Namespace betrachtet.
namespace hdmo { int a = 1; } namespace hdmo { int b = 1; }Zu diesem Zeitpunkt repräsentieren die beiden HDMI den gleichen Namespace.
Die C++-Standardbibliothek wird im Namensraum std (Standard) gespeichert, um Konflikte mit Funktionen in anderen Sprachen zu verhindern. Aus diesem Grund enthalten C++-Programme grundsätzlich eine
using namespace std;
Nur um die C++-Standardbibliothek einzubinden.
Da es sich bei einem Namespace um eine Domäne handelt, müssen Sie zum Ausführen dieser Operation einen Operator wie eine Struktur verwenden, wenn Sie dessen Funktionsvariablen und andere Inhalte extern verwenden möchten.
Der Aufrufoperator eines Namespace besteht aus zwei Doppelpunkten::
#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; }
Aus den Ausgabeergebnissen können wir Folgendes erkennen: Wenn die Vorderseite von :: leer ist, werden standardmäßig die Variablen des globalen Bereichs aufgerufen.
Es gibt drei Möglichkeiten, Variablen, Funktionen usw. im Namensraum zu verwenden:
1.Einzelbesuch: Verwenden Sie ::, um einzeln auf Variablen oder Funktionen in einem Namespace zuzugreifen. Dies ist die sicherste Verwendungsmethode.
2.Einzelne Erweiterung : Verwenden Sie „using“, um eine Variable oder Funktion allein zu erweitern. Nach der Erweiterung wird ihr Bereich zum globalen Bereich und ist nicht mehr durch den Namespace eingeschränkt. Es wird empfohlen, diese Methode unter normalen Bedingungen ohne Konflikte zu verwenden.
3.Vollständig erweitert: Es wird nicht empfohlen, alle angegebenen Namespaces in Projekten zu verwenden. Es kann in kleinen Programmen verwendet werden (die Standardbibliothek der C++-Standardbibliothek ist vollständig erweitert). cout, std muss nicht vorangestellt werden::)
In der C-Sprache lauten unsere Eingabe- und Ausgabeanweisungen scanf bzw. printf. C++ ist auch mit den Eingabe- und Ausgabeanweisungen der C-Sprache kompatibel, verfügt jedoch auch über eigene Eingabe- und Ausgabefunktionen, nämlich cin und cout.
Um die Funktionen cin und cout verwenden zu können, müssen Sie include<iostream>Standard-Eingabe- und Ausgabestream-Bibliothek und muss die C++-Standardfunktionsbibliothek enthalten
- #include <iostream>
- using namespace std;
Wenn Sie cin verwenden, verwenden Sie zur Eingabe „>>“.
Wenn Sie cout verwenden, verwenden Sie zur Ausgabe „<<“.
<< ist der Stream-Einfügungsoperator, >> ist der Stream-Extraktionsoperator (<< und >> stellen auch Linksverschiebungs- und Rechtsverschiebungsoperatoren in der C-Sprache dar)
- #include <iostream>
- using namespace std;
- int main()
- {
- int a = 0;
- cin >> a;
- cout << a << endl;
- printf("%dn", a);
- return 0;
- }
Wir können endl zunächst einfach als Zeilenumbruch „n“ verstehen; der grundlegende Teil wird nicht zu viel erklärt und in zukünftigen Studien hinzugefügt.
Aus dem obigen Code können wir ersehen, dass cin und cout nicht wie scanf und printf %d, %c usw. verwenden, um das Eingabe- und Ausgabeformat von Variablen zu steuerncin und cout können die Arten von Variablen und Daten automatisch identifizieren, was ein relativ praktischer Ort ist.
In der VS2022-Umgebung enthält der obige Code nicht<stdio.h> Sie können auch die Funktionen scanf und prinf verwenden, da in VS<iostream>indirekt einbezogen<stdio.h>Daher kann es direkt verwendet werden, muss jedoch möglicherweise in andere Kompilierungsumgebungen eingebunden werden.<stdio.h> .
Wenn Sie Operationen wie Steuergenauigkeit erreichen möchten, wird empfohlen, die Eingabe- und Ausgabemethoden der C-Sprache direkt zu verwenden. Die Implementierung dieser Operation in C++ ist schwieriger.
Es ist zu beachten, dass scanf und printf schneller sind als cin und cout. Der folgende Code kann die Effizienz von cin und cout im Wettbewerb verbessern Erklärung noch.
- #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;
- }
Standardparameter dienen dazu, Funktionsparametern beim Deklarieren oder Definieren einer Funktion einen Standardwert zuzuweisen. Wenn der Standardparameter keinen Wert übergibt, wird der definierte Standardwert verwendet Wert verwendet wird.
Standardparameter werden in Vollstandard und Halbstandard unterteilt; Vollstandard bedeutet, dass alle formalen Parameter Standardwerte erhalten, und Halbstandard bedeutet, dass einige formale Parameter Standardwerte erhalten. Und C++ legt fest, dass Semi-Standardparameter nacheinander von rechts nach links standardmäßig voreingestellt werden müssen und nicht in Abständen auf den Standardwert springen können.
- #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;
- }
Das Ergebnis des obigen Codes ist:
Semi-Default muss die Definition und Kontinuität der Standardparameter von rechts nach links sicherstellen, mit normalen Parametern links und Standardparametern rechts.
Funktionsüberladung bedeutet, dass mehrere Funktionen gleichzeitig denselben Funktionsnamen haben. Derselbe Funktionsname repräsentiert mehrere Funktionen gleichzeitig, was eine Überladung darstellt.
Der Unterschied zwischen ihnen wird durch den Parametertyp und die Parameternummer bestimmt und hat nichts mit dem Rückgabewerttyp zu tun.Zwei Funktionen mit demselben Namen, die nur unterschiedliche Rückgabewerttypen haben, können nicht überladen werden。
- #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;
- }
Das Ergebnis ist:
Aus dem obigen Code können wir ersehen, dass die Verwendung von Überladung dazu führen kann, dass wir Funktionen bequemer nutzen können. Um den oben genannten Effekt zu erzielen, müssen wir in der C-Sprache vier verschiedene Funktionsnamen verwenden, um vier Funktionen zu definieren, und sie bei Verwendung unterschiedlich verwenden. Durch Überladen in C ++ können wir alle Additionsfunktionen vereinheitlichen, da es nicht erforderlich ist, einen Namen zu unterscheiden Wenn Sie es verwenden, verwenden Sie es einfach direkt, was sehr praktisch ist.
Dieser Artikel über die Grundlagen des Einstiegs in C++ endet hier. Später werden wir weitere grundlegende Kenntnisse erläutern. Herzlich willkommen, uns weiterhin Ratschläge zu geben.
Sollten Sie Mängel haben, können Sie diese gerne per Privatnachricht oder im Kommentarbereich darauf hinweisen!
Startseite:Pirate Cat Ou-CSDN-Blog
Hier ist die kleine Möwe! Bis zum nächsten Mal~(*¯︶¯*)~