2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Tervetuloa kaikki Pirate Cat Oun blogiin—-
Pitkän tauon jälkeen jatketaan ahkerasti opiskelua!
Sisällysluettelo
Nimiavaruuden olemassaolon arvo:
C/C++:ssa on suuri määrä muuttujia, funktioita ja luokkia, jotka opitaan myöhemmin. Näiden muuttujien, funktioiden ja luokkien nimet ovat kaikki globaalissa laajuudessa, mikä voi aiheuttaa monia ristiriitoja.Nimiavaruuksien käytön tarkoitus on lokalisoida tunnisteiden nimet nimiristiriitojen tai nimien saastumisen välttämiseksi. Nimiavaruuden avainsana näyttää ratkaisevan tämän ongelman.
Lyhyesti sanottuna, kun samassa projektissa on useita samannimisiä muuttujia, se voi estää nimeämisristiriidat tai nimisaasteet ja myös helpottaa erottamista. Sen voidaan sanoa olevan välttämätön suurten projektien kehittämisessä.
Nimiavaruus on nimiavaruuden avainsana Lisää nimiavaruuden nimi avainsanan jälkeen ja lisää {} rajoittaaksesi laajuutta.
namespace hdmo { int a = 1; }Ilmoitus: Nimiavaruuden viimeisen ' }':n perään ei tarvitse lisätä ';
Nimiavaruuden ydin on, että luomme toimialueen, joka on riippumaton globaalista laajuudesta. Aivan kuten jokaisella funktiolla on laajuus, kunkin funktion parametrien laajuus on funktion piirissä.Sama koskee nimiavaruuksiaNimiavaruuden funktioiden, muuttujien jne. laajuus on nimiavaruuden rajoitetun laajuuden sisällä ja sitä on käytettävä kutsumalla nimiavaruus., mutta se on syytä huomioidaNimiavaruuden jne. funktiomuuttujilla on globaali elinkaari
Nimiavaruus voidaan määrittää vain globaalissa laajuudessa, ja se voidaan myös sisäkkäin.
Samassa projektissa samannimiset nimiavaruudet pidetään samana nimiavaruutena.
namespace hdmo { int a = 1; } namespace hdmo { int b = 1; }Tällä hetkellä kaksi hdmoa edustavat samaa nimiavaruutta.
C++-standardikirjasto on tallennettu nimiavaruuteen nimeltä std (standardi), jotta vältetään ristiriidat muiden kielten funktioiden kanssa. Tästä syystä C++-ohjelmat sisältävät periaatteessa a
using namespace std;
Vain C++-standardikirjaston sisällyttämiseksi.
Koska nimiavaruus on toimialue, jos haluat käyttää sen funktiomuuttujia ja muuta sisältöä ulkoisesti, sinun on käytettävä operaattoria kuten rakennetta tämän toiminnon saavuttamiseksi.
Nimiavaruuden kutsuoperaattori on kaksi kaksoispistettä::
#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; }
Tulosten tuloksista voimme tietää, että: kun :::n etuosa on tyhjä, globaalin laajuuden muuttujia kutsutaan oletusarvoisesti.
On kolme tapaa käyttää muuttujia, funktioita jne. nimiavaruudessa:
1.yksi käynti: Käytä :: käyttääksesi yksitellen muuttujia tai funktioita nimiavaruudessa, mikä on turvallisin tapa käyttää sitä;
2.Yksittäinen laajennus : Käytä muuttujan tai funktion laajentamiseen yksinään. On suositeltavaa käyttää tätä menetelmää yleisissä olosuhteissa ilman ristiriitoja.
3.Täysin laajennettu: Laajenna suoraan kaikkia määritettyjä nimiavaruuksia. Ei suositella käytettäväksi projekteissa. Ristiriitariski on suuri ja sitä voidaan käyttää pienissä ohjelmissa (C++-standardin kirjasto on täysin laajennettu, joten kun käytämme cinia ja coutia. , Ei tarvita etuliitettä std::)
C-kielessä syöttö- ja tulostuskäskyt ovat vastaavasti scanf ja printf. C++ on myös yhteensopiva C-kielen syöttö- ja lähtökäskyjen kanssa, mutta sillä on myös omat syöttö- ja lähtötoiminnot, nimittäin cin ja cout.
Jotta voit käyttää cin- ja cout-toimintoja, sinun on sisällytettävä<iostream>Vakiotulo- ja lähtövirtakirjasto, ja sen tulee sisältää C++-standardifunktiokirjasto
- #include <iostream>
- using namespace std;
Kun käytät ciniä, käytä '>>' syöttääksesi;
Kun käytät cout, käytä '<<' tulostaaksesi.
<< on virran lisäysoperaattori, >> on virran poimintaoperaattori (<< ja >> edustavat myös vasemmalle ja oikealle siirtooperaattoreita C-kielellä)
- #include <iostream>
- using namespace std;
- int main()
- {
- int a = 0;
- cin >> a;
- cout << a << endl;
- printf("%dn", a);
- return 0;
- }
Voimme ensin ymmärtää yksinkertaisesti rivinvaihdon 'n' perusosaa ei selitetä liikaa, ja se lisätään tulevissa tutkimuksissa.
Yllä olevasta koodista voidaan nähdä, että cin ja cout eivät käytä %d, %c jne. kuten scanf ja printf säätämään muuttujien tulo- ja lähtömuotoacin ja cout voivat automaattisesti tunnistaa muuttujien ja tietojen tyypit, joka on suhteellisen kätevä paikka.
VS2022-ympäristössä yllä oleva koodi ei sisällä<stdio.h> , voit käyttää myös scanf- ja prinf-funktioita, koska VS<iostream>epäsuorasti mukana<stdio.h>, joten sitä voidaan käyttää suoraan, mutta se on ehkä sisällytettävä muihin käännösympäristöihin.<stdio.h> .
Kun halutaan saavuttaa operaatioita, kuten ohjaustarkkuutta, on suositeltavaa käyttää suoraan C-kielen syöttö- ja tulostusmenetelmiä. Tämän toiminnon toteuttaminen C++:ssa on hankalampaa.
On syytä huomata, että scanf ja printf ovat nopeampia kuin cin ja cout. Kilpailussa scanf ja printf voidaan käyttää suoraan jumiutuneen ajoajan kysymyksessä. Seuraava koodi voi parantaa cin:n ja coutin tehokkuutta selitys vielä.
- #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;
- }
Oletusparametrit antavat funktion parametreille oletusarvon, kun funktiota kutsutaan, jos oletusparametri ei välitä arvoa, määritettyä oletusarvoa käytetään käytetään arvoa.
Oletusparametrit on jaettu täydellisiin oletusarvoihin ja puolioletusarvoihin. Täysi oletusarvo tarkoittaa, että kaikille muodollisille parametreille annetaan oletusarvot, ja puolioletusarvo tarkoittaa, että joillekin muodollisille parametreille annetaan oletusarvot. Ja C++ edellyttää, että puolioletusparametrit on asetettava oletusarvoisesti peräkkäin oikealta vasemmalle, eivätkä ne voi hypätä oletusarvoihin aikavälein.
- #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;
- }
Yllä olevan koodin tulos on:
Puolioletuksen on varmistettava oletusparametrien määrittely ja jatkuvuus oikealta vasemmalle, normaaliparametrit vasemmalla ja oletusparametrit oikealla.
Funktioiden ylikuormitus tarkoittaa, että samalla funktion nimellä on useita toimintoja samanaikaisesti. Sama funktion nimi edustaa useita toimintoja samanaikaisesti, mikä on ylikuormitusta.
Niiden välinen ero määräytyy parametrin tyypin ja numeron mukaan, eikä sillä ole mitään tekemistä palautusarvon tyypin kanssa.Kahta samannimistä funktiota, joilla on vain eri palautusarvotyypit, ei voida ylikuormittaa。
- #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;
- }
Tulos on:
Yllä olevasta koodista voimme nähdä, että ylikuormituksen käyttö voi tehdä toimintojen käytöstä mukavampaa. C-kielessä edellä mainitun vaikutuksen saavuttamiseksi meidän on käytettävä neljää eri funktion nimeä neljän funktion määrittämiseen ja käytettävä niitä eri tavalla käytettäessä C++:n ylikuormituksen avulla voimme yhdistää kaikki lisäysfunktiot, koska yhtä nimeä ei tarvitse erottaa kun käytät sitä, käytä sitä suoraan, mikä on erittäin kätevää.
Tämä artikkeli C++:n käytön aloittamisesta päättyy tähän Myöhemmin jatketaan muiden perustietojen selittämistä.
Jos sinulla on puutteita, voit ilmoittaa niistä yksityisviestillä tai kommenttikentässä!
Kotisivu:Pirate Cat Ou-CSDN -blogi
Tässä on pikkulokki! Nähdään ensi kerralla~(*¯︶¯*)~