2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
(1) Automaattinen automaattinen johtaminen
automaattisesti päättelee muuttujan tyypin
auto ei edusta todellista tyyppiä, se on vain paikkamerkki tyyppimäärittelylle
Auto ei ole kaikkivoipa, ja se voidaan päätellä missä tahansa skenaariossa. Autolla ilmoitetut muuttujat on alustettava, jotta kääntäjä voi päätellä sen todellisen tyypin ja muuntaa automaattisen todelliseksi tyypiksi käännöshetkellä.
Kun muuttuja ei ole osoitin tai viite, johtamistulos ei säilytä const- ja volatile-avainsanoja, kun muuttuja on osoitin tai viite, johtamistulos säilyttää const- ja volatile-avainsanat.
Skenaariot, joissa automaattia ei voi käyttää:
1.autoa ei voida käyttää funktioparametrina, koska auto-parametrin käyttäminen muodollisena parametrina vastaa muuttujan alustamatta jättämistä, eikä autoa voida viedä;
2. Sitä ei voida käyttää luokan ei-staattisten jäsenmuuttujien alustamiseen, koska ei-staattiset jäsenmuuttujat kuuluvat objekteihin ja objektin tyyppiä ei tiedetä ennen kuin se on luotu;
3. Et voi käyttää automaattista avainsanaa taulukon määrittämiseen.
4. Auto ei voida käyttää malliparametrien johtamiseen;
Suositellut käyttöskenaariot autolle:
1. Käytetään STL-konttien läpikulkuun;
2. Käytetään yleiseen ohjelmointiin;
(2) decltype-tyypin johdannainen
Joskus et tarvitse tai et voi määrittää muuttujia, mutta haluat saada tietyn tyypin ;Toisin sanoen päättele a:n ja x:n tyyppi
Johtamissäännöt:
1. Lauseke on tavallinen muuttuja, tavallinen lauseke tai aikaluokan lauseke, ja decltype:llä johdettu tyyppi on yhdenmukainen lausekkeen tyypin kanssa;
2. Lauseke on funktio, ja decltype:n avulla päätelty tyyppi on yhdenmukainen funktion palautusarvon kanssa (jos palautusarvoa muutetaan const, volatile-tunnisteilla, tarkenteet jätetään huomioimatta);
3. Lauseke on lvvalue tai käärittynä (), ja decltypeä käytetään päättelemään viittaus lausekkeen tyyppiin (jos palautusarvoa muutetaan const- tai volatile-tunnisteilla, tarkenteet ohitetaan);
Decltype-sovellusskenaariot:
1. Käytetään enimmäkseen yleisohjelmoinnissa, koska geneerisessä ohjelmoinnissa on suuri määrä epävarmoja tyyppejä;
final käytetään rajoittamaan tietyn luokan periytymistä tai tietyn virtuaalisen funktion ohittamista.
Kun lopullinen muokkaa funktiota, voit muokata vain virtuaalisia funktioita, ja lopullinen avainsana on sijoitettava luokan tai funktion jälkeen. Kun virtuaalista funktiota muutetaan finalilla, se voi estää alaluokkaa ohittamasta emoluokan virtuaalista funktiota.
Kun final muokkaa luokkaa, kirjoita lopullinen luokan nimen perään, mikä osoittaa, että tätä luokkaa ei enää sallita periytyä, eli tällä luokalla ei ole enää johdettuja luokkia.
Varhainen rooli: käytetään nimiavaruuksien ilmoittamiseen.
Uusi funktio: määritä tyyppinen alias. Huomaa, että käyttämällä antaa vain aliaksen alkuperäiselle tyypille, sen sijaan, että määrittäisi uuden tyypin.
Käyttämällä typedef-komentoa funktioosoittimien määrittämiseen, koodi on helpompi lukea. Alkuaikoina typedef-komentoa käytettiin määrittämään funktioosoittimia, kuten: typedef int (.func)(int, string);Käytä määritelmää sen sijaan: using func = int()(int, merkkijono);
Käyttämällä voi määrittää aliaksia malleille, mutta typedef ei voi
Varhaiset C-kääntäjät tulkitsivat kaksi suorakulmasulkua oikealle siirtooperaattoreiksi
Uusista ominaisuuksista kääntäjän jäsennyssääntöjä on parannettu jäsentämään useita suorakulmaisia sulkumerkkejä malliparametrien päätteiksi mahdollisimman paljon.
Ohitustoimintoa käytetään varmistamaan, että johdetun luokan ohitettavalla funktiolla on sama allekirjoitus kuin vastaavalla perusluokan virtuaalifunktiolla, ja se osoittaa myös selvästi, että perusluokan funktio ohitetaan.
Override kirjoitetaan funktion perään, jossa todetaan nimenomaisesti, että funktio on ohitettu, ja kääntäjä tarkistaa funktion tyypin ja emoluokan virtuaalisen funktion.
Kirjoita funktion palautusarvon tyyppi funktion ilmoituksen rungon jälkeen auto func (parametri 1, parametri 2,...) -