Sisukord
- Mis on C++?
- Miks kasutada C++
- Funktsioonid
- Kohaliku keskkonna seadistamine
- C++ põhiline sisend/väljund
- Standardne väljundvoog (cout)
- Standardne sisendvoog (cin)
- Standardne lõpprida (endl)
- C++ muutujad
- C++ identifikaatorid
- C++ andmetüübid
- C++ konstandid/literaalid
- C++ salvestusklassid
- C++ modifikaatorite tüübid
- Operaatorid C++ keeles
- C++ tsüklid
- Otsuste tegemise avaldused
- C++ funktsioonid
- C++ numbrid
- C++ massiivid
- C++ stringid
- C++ osutid
- C++ viited
- C++ kuupäev ja kellaaeg
- C++ andmestruktuurid
- C++ klassid ja objektid
- C++ pärand
- C++ juurdepääsu modifikaatorid
- C++ ülekoormus
- C++ polümorfism
- C++ andmete abstraktsioon
- C++ andmete kapseldamine
- C++ abstraktsed klassid
- C++ erandite käsitlemine
- C++ dünaamiline mälu
- C++ mallid
- C++ eelprotsessorid
- C++ signaalitöötlus
- C++ veebiprogrammeerimine
- Järeldus
- Soovitatavad artiklid
Mis on C++?
C++ on platvormideülene keel, mida kasutatakse suure jõudlusega rakenduste loomiseks. Bjarne Stroustrup töötas selle välja C-keele laiendusena. C++ annab programmeerijatele kontrolli süsteemiressursside ja mälu üle. Keelt värskendati kolm korda 2011., 2014. ja 2017. aastal versiooniks C++11, C++14 ja C++17.
Miks kasutada C++
- C++ on programmeerimisel üks populaarsemaid keeli.
- C++ võib leida operatsioonisüsteemidest, GUI-dest ja manussüsteemidest.
- See on objektorienteeritud programmeerimiskeel, mis annab programmidele selge struktuuri ja võimaldab koodi taaskasutada, alandades arenduskulusid.
- See on kaasaskantav ja seda saab kasutada rakenduste arendamiseks, mida saab kohandada mitmele platvormile.
- Kuna C++ on lähedal C#-le ja Java , teeb see programmeerijate jaoks lihtsaks ülemineku C++-le või vastupidi.
Funktsioonid
- See nõuab päist.
- Kasutage nimeruumi std; et hoiatada kompilaatorit nimeruumi std kasutamise eest.
- Rida int main() on peamine funktsioon, kust programmi täitmine algab.
- Järgmine rida lõikab<< Hello World; the word Hello World is reflected on the keyboard.
- Järgmine rida tagastab 0; funktsioon main() lõpeb.
- int a;
- int _ab;
- int a30;
- int 4;
- intxy;
- int double;
- Tõene väärtus, mis esindab tõsi.
- Väärtus false, mis tähistab vale.
- allkirjastatud
- allkirjastamata
- pikk
- lühike
- Aritmeetiline operaator
- Loogiline operaator
- Bitioperaator
- Ülesandeoperaator
- Suhteoperaator
- Muu operaator
- kui avaldus
- kui..muud väited
- pesastatud if-avaldused
- kui-muidu-kui redel
- Hüppeavaldused:
- murda
- jätka
- minema
- tagasi
- int – salvestatava elemendi tüüp
- y – massiivi nimi
- 4 – massiivi suurus
- Stringid, mis on stringiklassi objektid
- C-stringid
- Esiteks määratlege osuti muutuja
- Nüüd määrake muutuja aadress kursorile, kasutades (&), mis tagastab selle muutuja aadressi.
- Juurdepääs aadressi salvestatud väärtustele, kasutades (*), mis tagastab muutuja väärtuse, mis asub selle operandiga määratud aadressil.
- sisse mitmeteeline pärand, tuletatud klass luuakse teisest tuletatud klassist ja sama baasklass teisest tuletatud klassist. Seda pärandit ei toeta . NET Keeled nagu C#, F# jne.
- Avalik
- Privaatne
- Kaitstud
- Kursuses avalikeks kuulutatud liikmetele pääseb juurde kõikjalt programmis.
- Klassi privaatseks kuulutatud liikmetele pääseb juurde ainult klassi seest. Neile ei ole lubatud juurde pääseda ühestki koodi osast väljaspool klassi.
- Muutke kõik andmeliikmed privaatseks.
- Looge iga andmeliikme jaoks avalik seadja ja hankija funktsioonid nii, et komplekti funktsioon määrab andmeliikme väärtuse ja funktsioon get saab andmeliikme väärtuse
- Mälus dünaamilise ruumi loomine
- Selle aadressi salvestamine kursorisse
- Funktsioonide mallid
- Klassi mallid
- makro
- Faili kaasamine
- Tingimuslik koostamine
- Muud direktiivid
Kohaliku keskkonna seadistamine
Oleks hea, kui teie arvutis oleks järgmine tarkvara.
See on tegelik C++ kompilaator, mida kasutatakse lähtekoodi kompileerimiseks lõplikku käivitatavasse programmi. Enamik C++ kompilaatoreid ei hooli sellest, millise laienduse te oma lähtekoodile annate. Kõige sagedamini kasutatav kompilaator on GNU C/C++ kompilaator.
Tarkvara kasutab seda tippimiseks. Näiteks Windows Notepad, OS Edit, Short, Epsilon, EMACS ja Vim või VI käsud. Redaktoriga genereeritavaid faile nimetatakse lähtefailideks ja C++-faile .cpp, .cp või .c. C++ programmeerimise alustamiseks peab paigas olema tekstiredaktor.
Vaatame nüüd, mida klass, objekt, meetodid ja eksemplari muutujad tähendavad.
NÄIDE
|_+_|VÄLJUND
|_+_|Vaatame ülalmainitud programmi erinevaid osi -
C++ põhiline sisend/väljund
C++ I/O-operatsioon kasutab vookontseptsiooni. Voog on baitide jada või andmevoog. See muudab jõudluse kiireks.
Kui baidid voolavad põhimälust seadmesse, nagu printer, ekraan või võrguühendus jne, nimetatakse seda väljundoperatsioon.
Kui baidid voolavad põhimällu mõnest seadmest (nt printer, ekraan, võrguühendus jne), nimetatakse seda nn. sisendoperatsioon.
Standardne väljundvoog (cout)
The kulu on eelmääratletud objekt oja klass. See on ühendatud väljundseadmega, milleks on tavaliselt kuvar. Cout kasutatakse voo sisestamise operaatoriga ühendamiseks, et kuvada väljund konsoolil
NÄIDE
|_+_|VÄLJUND
|_+_|Standardne sisendvoog (cin)
The džinn on eelmääratletud objekt. See on ühendatud sisendseadmega, milleks on tavaliselt klaviatuur. Cin kasutatakse voo ekstraheerimise operaatoriga (>>) liitumiseks konsooli sisendi lugemiseks.
NÄIDE
|_+_|VÄLJUND
|_+_|Standardne lõpprida (endl)
The endl on klassi etteantud objekt. Seda kasutatakse uute reamärkide sisestamiseks ja voo loputamiseks.
NÄIDE
|_+_|VÄLJUND
|_+_|C++ muutujad
Muutuja on mälukoha nimi. Seda kasutatakse andmete salvestamiseks. Väärtust saab muuta ja seda kasutatakse mitu korda uuesti. See on viis mälu asukoha kujutamiseks sümboli kaudu, mida on lihtne tuvastada. Muutujal võivad olla tähestikud, alakriips ja numbrid. Muutuja nimi võib alata tähestikuga ja ainult alakriipsuga. See ei saa alata numbriga.
Muutuja nimes ei ole tühikud lubatud.
Muutuja nimi ei tohi olla reserveeritud sõna või märksõna, nt char, float jne.
Kehtivad muutujate nimed:
Kehtetud muutujate nimed:
C++ identifikaatorid
C++ identifikaatorit kasutatakse muutuja, funktsiooni, klassi, mooduli või muu kasutaja määratud üksuse tuvastamiseks. See algab tähega A kuni Z või a kuni z või alakriipsuga (_), millele järgneb null või enam tähte ja 0 kuni 9. C++ ei luba identifikaatorites kasutada kirjavahemärke nagu @, $ ja %. See on tõstutundlik programmeerimiskeel. Seega on tööjõud ja tööjõud C++ keeles kaks erinevat identifikaatorit.
C++ andmetüübid
Tüüp | Märksõnad |
---|---|
Iseloom | char |
Boolean | bool |
Ujukoma | ujuk |
Kahekordne ujukoma | kahekordne |
Täisarv | int |
Väärtusetu | tühine |
Lai iseloom | wchar_t |
Tüüp | Tüüpiline bitilaius | Tüüpiline vahemik |
char | 1 bait | -127 kuni 127 või 0 kuni 255 |
märgita täht | 1 bait | 0 kuni 255 |
signeeritud char | 1 bait | -127 kuni 127 |
wchar_t | 2 või 4 baiti | 1 lai märk |
int | 4 baiti | -2147483648 kuni 2147483647 |
allkirjastamata int | 4 baiti | 0 kuni 4294967295 |
allkirjastatud int | 4 baiti | -2147483648 kuni 2147483647 |
lühike int | 2 baiti | -32768 kuni 32767 |
ujuk | 4 baiti | |
allkirjastamata lühike int | 2 baiti | 0 kuni 65 535 |
allkirjastatud lühike int | 2 baiti | -32768 kuni 32767 |
pikk int | 8 baiti | -2 147 483 648 kuni 2 147 483 647 |
allkirjastatud pikk int | 8 baiti | sama mis pikk int |
allkirjastamata pikk int | 8 baiti | 0 kuni 4 294 967 295 |
pikk pikk int | 8 baiti | -(2^63) kuni (2^63)-1 |
allkirjastamata pikk pikk int | 8 baiti | 0 kuni 18 446 744 073 709 551 615 |
kahekordne | 8 baiti | |
pikk topelt | 12 baiti |
C++ konstandid/literaalid
Konstandid viitavad fikseeritud väärtustele, mida programm võib muuta ja neid nimetatakse literaalideks.
Konstandid võivad olla mis tahes algandmetüüpidest ja jagunevad täisarvudeks, märkideks, ujukomanumbriteks, stringideks ja tõeväärtusteks.
Täisarvud
Täisarvuline literaal on kümnend-, kaheksand- või kuueteistkümnendkonstant.
Täisarvuliteraalil on järelliide, mis on L ja U kombinatsioon, vastavalt pikaks ja märgita. Sufiks võib olla väike- või suurtäht ning olla suvalises järjekorras.
Näiteks: 212, 215u, 0xFeeL, 078, 032UU
Ujukomaga literaalid
Ujukomaliteraalil on täisarvuline osa, murdosa, koma ja astendaja osa. Ujukomaliteraale saab esitada kas kümnend- või eksponentsiaalses vormis.
Kümnendvormiga esitamisel peate lisama koma, astendaja või mõlemad. Eksponentvormi kasutades peab teil olema murdosa, täisarvuline osa või mõlemad. Märgiga astendaja sisestatakse E või e.
Boole'i literaalid
On kaks Boole'i literaali
Tähemärgid
Tähemärgiliteraalid on ümbritsetud üksikute jutumärkidega. Kui literaal algab tähega L, on see laia tähemärgiga literaal ja see tuleks salvestada wchar_t tüüpi muutujasse. Vastasel juhul on see kitsas täheliteraal ja see on salvestatud lihtsasse char tüüpi muutujasse.
Põgenemise jada | Tähendus |
\ | märk |
' | ‘ tegelane |
iseloomu | |
? | ? iseloomu |
o | Hoiatus või kell |
Tagasilükkeklahv | |
f | Vormi sööt |
Uus rida | |
Vankri tagastus | |
Horisontaalne vahekaart | |
v | Vertikaalne vahekaart |
ooo | Ühe kuni kolmekohaline kaheksandnumber |
xhh . . . | Ühest või mitmest numbrist koosnev kuueteistkümnendsüsteem |
C++ salvestusklassid
Automaatne salvestusklass
See on kõigi kohalike muutujate vaikesalvestusklass.
SÜNTAKS
|_+_|Registri salvestusklass
Neid kasutatakse kohalike muutujate määratlemiseks, mis salvestatakse RAM-i asemel registrisse. See tähendab, et muutuja maksimaalne suurus on võrdne registri suurusega ja sellele ei saa rakendada operaatorit &.
SÜNTAKS
|_+_|Staatiline salvestusklass
See käsib kompilaatoril hoida kohalikku muutujat programmi ajal alles, selle asemel et seda luua ja hävitada. Nii et kohalike muutujate staatiliseks muutmine võimaldab neil funktsioonikutsete vahel väärtusi säilitada.
Väline salvestusklass
Seda kasutatakse globaalse muutuja viite andmiseks, mis on nähtav igale programmifailile. Kui kasutate 'välist', ei saa muutujat lähtestada.
Muutuva salvestusklass
Muteeruv spetsifikaator kehtib klassiobjektide kohta. See pakub objekti liikme funktsiooni const liikme funktsiooni alistamiseks. See tähendab, et muutuvat liiget saab muuta const-liikme funktsiooniga.
C++ modifikaatorite tüübid
C++ pakub char, int ja double andmetüüpe, et nende ees oleksid modifikaatorid. Alustüübi tähenduse muutmiseks kasutatakse modifikaatorit, et see sobiks täpsemalt erinevate olukordade vajadustega.
Andmetüüpide modifikaatorid on mainitud allpool−
Märgiga, märgita, pikk ja lühike modifikaatorid rakendatakse täisarvu baastüüpidele. Lisaks rakendatakse märgile allkirjastatud ja allkirjastamata ning topeltmärgile long.
Signeeritud ja allkirjastamata modifikaatoreid kasutatakse pikkade või lühikeste modifikaatorite eesliidetena.
Kvalifitseerijate tüübid
NÄIDE
|_+_|VÄLJUND
|_+_|Operaatorid C++ keeles
Operaator on sümbol, mis aitab kompilaatoril teha konkreetseid matemaatilisi või loogilisi manipulatsioone. C++ sisaldab erinevaid sisseehitatud operaatoreid ja pakub järgmist tüüpi operaatoreid −
Aritmeetiline operaator
Aritmeetilised operaatorid pole muud kui operaatorid, mida kasutatakse aritmeetiliste toimingute tegemiseks muutujate või kahe väärtuse vahel.
Operaatorid | Kirjeldus | Süntaks |
+ | Lisab kaks operandi | a+b |
* | Korrutab kaks operandi | a*b |
– | Lahutab kaks operandi | a-b |
/ | Jagab esimese operandi teisega | a/b |
% | Tagastab jäägi, kui esimene operandi jagatakse teisega | a%b |
++ | See suurendab täisarvu väärtust ühe võrra | a++ |
— | See vähendab täisarvu väärtust ühe võrra | to- |
Loogiline operaator
C++ loogilised operaatorid kombineerivad muutujate tõesed või valed väärtused, et saaksite välja selgitada nende tulemuseks oleva tõeväärtuse.
Operaatorid | Kirjeldus | Süntaks |
Või (||) | Tõene, kui üks operanditest on tõene | (A || B) on tõsi. |
Ja (&&) | Tõene, kui mõlemad operandid on tõesed | (A && B) on vale. |
Mitte (!) | Kui tingimus on tõene, muudab operaator Loogiline EI vääraks. | !(A && B) on tõsi. |
Bitioperaator
C++ puhul teostavad bitipõhised operaatorid täisarvude bitipõhiseid arvutusi. Bitioperaator: tagastab 1, kui mõlemad bitid on 1, muidu 0. Näide: a = 10 = 1010 (binaarne) b = 4 = 0100 (binaarne a & b = 1010 & 0100 = 0000 = 0 (kümnend) Bitipõhine või operaator: tagastab 1, kui üks bittidest on 1 muu 0.
Operaatorid | Kirjeldus | Süntaks |
>> | Binaarne nihe paremale x>> | x>> |
<< | Binaarne nihe vasakule | x<< |
^ | Binaarne XOR | x ^ y |
& | Binaarne JA | x ja y |
| | Binaarne VÕI | x | Y |
~ | Binaarne EI | ~x |
Ülesandeoperaator
Määramisoperaatorid määravad muutujatele väärtused. a = 5 on määramise operaator, mis määrab paremal oleva väärtuse 5 vasakpoolsele muutujale an.
Operaatorid | Kirjeldus | Süntaks |
= | Parema külje avaldise väärtuste määramine vasaku külje operandile. | a=b+c |
+= | Lisage parempoolne operand vasaku külje operandiga ja määrake seejärel vasakpoolsele operandile. | a+=b a=a+b |
-= | Lahutage parempoolse operandi vasakpoolsest operandist ja määrake see vasakpoolsele operandile. | a-=b a=a-b |
/= | Jagage vasakpoolse operandi parempoolse operandiga ja määrake seejärel vasakpoolsele operandile. | a/=b a=a/b |
%= | Võtke moodul vasaku ja parema operandi abil ning määrake tulemus vasakpoolsele operandile. | a%=b a=a%b |
*= | Arvutage astendaja väärtus operandide abil ja määrake väärtus vasakpoolsele operandile. | a*=b a=a*b |
&= | Täidab operandil bitipõhiselt JA ning määrab väärtuse vasakpoolsele operandile. | a&=b a=a&b |
|= | Täidab operandil bittide kaupa VÕI ja määrab väärtuse vasakpoolsele operandile. | a|=b a=a|b |
^= | Täidab operandil bittide kaupa VÕI ja määrab väärtuse vasakpoolsele operandile. | a^=b a=a^b |
>>= | Tehke operandil bitipõhine nihe paremale ja määrake väärtus vasakule operandile. | a>>=b a=a>>b |
<<= | Teostab operandil bitipõhise nihke vasakule ja määrab vasakpoolsele operandile väärtuse. | juurde<<= b a= a << b |
Suhteoperaator
Relatsioonioperaatorid on operaatorid, mida kasutatakse kahe väärtuse või objekti võrdlemiseks.
Operaatorid | Kirjeldus | Süntaks |
> | Suurem kui | x > y |
< | Vähem kui | x |
== | Võrdne | x == y |
!= | Pole võrdne | x != y |
>= | Suurem või võrdne | x >= y |
<= | Väiksem või võrdne | x<= y |
Erinevad operaatorid
Operaator | Kirjeldus |
Seisund? X: Y | Kui tingimus on tõene, tagastab see X väärtuse, vastasel juhul tagastab Y väärtuse. |
, | See põhjustab toimingute jada läbiviimist. Koma väärtus on komaga eraldatud loendi viimase avaldise väärtus. |
suurus | Tagastab muutuja suuruse. Näiteks sizeof(a), kus 'a' on täisarv ja tagastab 4. |
* | See on osuti muutujale. Näiteks *var; osutab muutujale var. |
Cast | See teisendab ühe andmetüübi teiseks. |
. (punkt) ja -> (nool) | Neid kasutatakse klasside, struktuuride ja ametiühingute üksikute liikmete viitamiseks. |
& | See tagastab muutuja aadressi. |
C++ tsüklid
silmuse jaoks
C++ for tsüklit kasutatakse programmi osa kordamiseks mitu korda. Kui iteratsioonide arv on fikseeritud, on soovitatav kasutada tsüklit kui while või do-while tsüklit.
C++ for tsükkel on sama mis C/C#. Saame initsialiseerida muutujaid, kontrollida tingimust ja väärtust suurendada/vähendada.
SÜNTAKS
|_+_|NÄIDE
|_+_|VÄLJUND
|_+_|Nested For Loop
C++-s saate kasutada tsüklit teise for tsükli sees. Seda tuntakse kui pesastatud silmust. Sisemine tsükkel täidetakse täielikult, kui välimine ahel käivitatakse üks kord. Nii et kui välimist ja sisemist tsüklit teostatakse neli korda, siis sisemist tsüklit täidetakse neli korda iga välimise tsükli kohta, st kokku 16 korda.
NÄIDE
|_+_|VÄLJUND
|_+_|Kuigi silmus
C++ puhul kasutatakse while loopi programmi osa kordamiseks mitu korda. Kui iteratsioonide arv ei ole fikseeritud, on soovitatav kasutada tsükli asemel tsüklit while.
SÜNTAKS
|_+_|NÄIDE
|_+_|VÄLJUND
|_+_|Pesastatud silmuse ajal
C++-s võid kasutada while-tsüklit teise while-tsükli sees; seda tuntakse pesastatud while-tsüklina. Pesastatud while-tsükkel käivitatakse, kui välimine tsükkel käivitatakse üks kord.
NÄIDE
|_+_|VÄLJUND
|_+_|Do-while silmus
C++ do-while tsüklit kasutatakse programmi osa kordamiseks mitu korda. Kui iteratsioonide arv pole fikseeritud ja peate tsükli vähemalt korra käivitama, on soovitatav kasutada do-while tsüklit.
C++ do-while tsükkel käivitatakse vähemalt üks kord, kuna tingimust kontrollitakse pärast tsükli keha.
SÜNTAKS
|_+_|NÄIDE
|_+_|VÄLJUND
|_+_|Pesastatud Do-While Loop
Kui kasutate C++ keeles do-while tsüklit teises do-while tsüklis, nimetatakse seda pesastatud do-while tsükliks. Pesastatud do-while tsükkel täidetakse täielikult iga välise do-while tsükli jaoks.
NÄIDE
|_+_|VÄLJUND
|_+_|Otsuste tegemise avaldused
Päriselus tuleb ette olukordi, kus on vaja teha mingeid otsuseid ja nende otsuste põhjal otsustad, mida peaksid edasi tegema. Sarnased probleemid tekivad ka programmeerimisel, kus on vaja teha mingeid otsuseid ja nende otsuste põhjal täidad järgmise koodiploki.
Programmeerimiskeelte otsustuslaused määravad programmi täitmise voo suuna. C++ keeles saadaval olevad otsustusavaldused on järgmised:
kui avaldus
kui väide on lihtne otsustusavaldus. Seda kasutatakse selleks, et otsustada, kas lausete plokk täidetakse või mitte. Kui tingimus on tõene, täidetakse lauseplokk, vastasel juhul mitte.
SÜNTAKS
|_+_|siin, tingimused pärast hindamist on kas tõene või väär. kui avaldus aktsepteerib tõeväärtusi.
NÄIDE
|_+_|VÄLJUND
|_+_|kui veel avaldus
If-lause ütleb, et kui tingimus on tõene, käivitab see lausete ploki ja kui tingimus on väär, siis seda ei täideta. Koodiploki käivitamiseks, kui tingimus on väär, saate kasutada if-lausega else-lauset.
SÜNTAKS
|_+_|NÄIDE
|_+_|VÄLJUND
|_+_|Pesastatud if-avaldused
Pesastatud if on C++-s if-lause, mis sihib teist if-lauset. Pesastatud if-laused tähendavad, et if-lause teise if-lause sees. Jah, nii C kui ka C++ pakuvad meile pesastatud if-lauseid if-lausete sees, st saate if-lause paigutada teise if-lause sisse.
SÜNTAKS
|_+_|NÄIDE
|_+_|VÄLJUND
|_+_|kui-muidu-kui redel
Kasutaja saab valida erinevate valikute vahel. If-laused täidetakse ülalt alla. Niipea, kui tingimused kontrollivad, et if on tõene, täidetakse sellega seotud lause ja ülejäänud else-if redel lõpetatakse. Kui tingimused ei vasta tõele, tehakse viimane ja viimane väide.
SÜNTAKS
|_+_|NÄIDE
|_+_|VÄLJUND
|_+_|Hüppeavaldused
Katkesta
Seda lauset kasutatakse tsükli lõpetamiseks. Niipea, kui katkestuslause kohtab tsükli seest, peatuvad tsükli iteratsioonid ja juhtimine naaseb kohe esimese lause juurde pärast tsüklit.
SÜNTAKS
Break;
Katkestuslauseid kasutatakse olukordades, kus me pole kindlad tsükli tegelikus iteratsioonide arvus või lõpetame tsükli mõne tingimuse alusel.
NÄIDE
|_+_|VÄLJUND
|_+_|Jätka
Jätkamislause on katkestuse lause vastand; tsükli lõpetamise asemel sunnib see tsükli järgmist iteratsiooni.
Jätkamislause sunnib tsüklit täitma järgmist iteratsiooni. Jätkamise lause täitmisel jäetakse jätkamislausele järgnevas tsüklis olev kood vahele ja algab järgmine iteratsioon.
SÜNTAKS
|_+_|NÄIDE
|_+_|VÄLJUND
|_+_|Minema
Goto lause C++ viitab tingimusteta hüppelausele, mida kasutatakse funktsiooni sees ühest punktist teise hüppamiseks.
SÜNTAKS
|_+_|NÄIDE
|_+_|VÄLJUND
|_+_|Tagasi
C++ tagastamine tagastab funktsiooni täitmise voo. See väide ei vaja tingimuslauseid. Kui lause on täidetud, peatub programmi voog kohe ja tagastab juhtelemendi sealt, kust seda kutsuti. Tagastuslause võib või ei pruugi tühifunktsiooni puhul midagi tagastada, kuid mittetühise funktsiooni puhul tuleb tagastada tagastatav väärtus.
SÜNTAKS
|_+_|NÄIDE
|_+_|VÄLJUND
|_+_|C++ funktsioonid
Funktsioon viitab lausete rühmale, mis võtab sisendi, töötleb seda ja tagastab väljundi. Funktsiooni eesmärk on kombineerida ikka ja jälle tehtud ülesandeid. Kui teil on erinevad sisendid, ei pea te sama koodi uuesti kirjutama. Funktsiooni saate kutsuda erineva andmekogumiga, mida nimetatakse parameetriteks.
C++ programmil on vähemalt üks funktsioon, funktsioon main().
Funktsiooni määratlemine
Funktsiooni definitsioon C++ keeles koosneb funktsiooni päisest ja kehast.
NÄIDE
|_+_|Funktsiooni deklareerimine
C++ keeles tuleb funktsioonid enne kasutamist deklareerida. Funktsiooni saab deklareerida, esitades selle tagastamisväärtuse, nime ja argumentide tüübid. Argumentide tingimused on valikulised. Funktsiooni definitsioon loetakse funktsiooni deklaratsiooniks.
NÄIDE
|_+_|Funktsiooni kutsumine
C++ funktsiooni loomisel määrate, mida see funktsioon tegema peab. Funktsiooni kasutamiseks peate selle funktsiooni kutsuma või käivitama.
Kui programm kutsub funktsiooni välja, kantakse programmi juhtimine üle kutsutud funktsioonile. Väljakutsutud funktsioon täidab määratletud ülesande ja kui selle tagastuslause täidetakse või kui selle funktsiooni lõpu sulg saavutatakse, tagastab see programmi juhtimise põhiprogrammile.
NÄIDE
|_+_|Funktsiooni argumendid
Kui funktsioon kasutab argumente, peaks see deklareerima muutujad, mis aktsepteerivad argumentide väärtusi. Neid muutujaid tuntakse kui funktsiooni formaalsed parameetrid.
C++ numbrid
Tavaliselt kasutame numbritega töötades primitiivseid andmetüüpe, nagu int, short, long, float, double jne. Andmetüüpide arvu, nende võimalikke väärtusi ja numbrivahemikke on selgitatud C++ andmetüüpide käsitlemisel.
NÄIDE
|_+_|VÄLJUND
|_+_|Matemaatilised operaatorid C++ keeles
JAH EI | Funktsioonid | Eesmärk |
üks | topeltpatt(topelt); | See võtab nurga (kahekordsena) ja tagastab siinuse. |
kaks | double cos (double); | See võtab nurga (kahekordsena) ja tagastab koosinuse. |
3 | topeltpruun(topelt); | See võtab nurga (kahekordsena) ja tagastab puutuja. |
4 | double pow(double, double); | Esimene on number, mida soovite tõsta ja teine on võimsus, mida soovite seda tõsta t |
5 | topeltlog(double); | See võtab arvu ja tagastab selle arvu loomuliku logi. |
6 | kahekordne hüpot (topelt, topelt); | Kui ületate selle täisnurkse kolmnurga kahe külje pikkuse, tagastab see teile hüpotenuusi pikkuse. |
7 | double sqrt(double); | Annate funktsioonile arvu ja see annab teile ruutjuure. |
8 | int abs(int); | See tagastab talle edastatud täisarvu absoluutväärtuse. |
9 | kahekorruseline (kahekordne); | Leiab täisarvu, mis on väiksem või võrdne sellele edastatud argumendiga. |
10 | double fabs(topelt); | See tagastab mis tahes talle edastatud kümnendarvu absoluutväärtuse. |
NÄIDE
|_+_|VÄLJUND
|_+_|C++ massiivid
C++ massiiv on külgnevates mälukohtades salvestatud üksuste kogum ja elementidele pääseb juurde juhuslikult, kasutades massiivi indekseid. Neid kasutatakse sarnaste elementide salvestamiseks, kuna andmetüüp peab olema kõigi elementide jaoks sama. Need võivad salvestada primitiivseid andmetüüpe, nagu char, int, float, double jne. Selle lisamiseks saab C++ massiivi salvestada tuletatud andmetüüpe, nagu struktuurid, osutid jne. Allpool on toodud massiivi maaliline esitus. .
Massiivi deklaratsioon
SÜNTAKS
|_+_|NÄIDE
|_+_|siin,
Juurdepääs massiivi elementidele
Iga massiivi element on ühendatud numbriga. Arvu nimetatakse massiiviindeksiks. Massiivi elementidele pääsete juurde indeksite abil.
SÜNTAKS
|_+_|NÄIDE
|_+_|Siin on mõned olulised C++ massiivi kontseptsioonid
C++ stringid
See on tegelaste kogum. Programmeerimiskeeles C++ kasutatakse kahte tüüpi stringe:
Keelte klass
C++ teek pakub a string klassi tüüp, mis toetab kõiki ülalmainitud toiminguid, lisaks palju rohkem funktsionaalsust.
NÄIDE
|_+_|VÄLJUND
|_+_|C stringid
See string pärineb C-keelest ja seda toetab C++. See string on ühemõõtmeline märkide massiiv, mille lõpetab nullmärk „ ”. Seega sisaldab null-lõpuga string märke, mis sisaldavad stringi, millele järgneb null.
NÄIDE
|_+_|VÄLJUND
|_+_|Vähesed funktsioonid, mis manipuleerivad null-lõpuga stringe
See kopeerib stringi s2 stringi s1.
See ühendab stringi s2 stringi s1 lõppu.
See tagastab osuti stringi s2 esinemisele stringis s1.
See tagastab stringi pikkuse s1.
Tagastab 0, kui s1 ja s2 on samad; väiksem kui 0, kui s1s2.
See tagastab kursori tähemärgi ch esinemisele stringis s1.
C++ osutid
Osutajad on aadresside esitus. Need võimaldavad programmidel simuleerida kõne viitepõhiselt ning luua ja manipuleerida dünaamilisi andmestruktuure.
SÜNTAKS
|_+_|Kuidas kasutada kursorit?
Vähesed näpunäidete mõisted
NÄIDE
|_+_|VÄLJUND
|_+_|C++ viited
Viitemuutuja on juba olemasoleva muutuja nimi. Kui viide on lähtestatud, võib muutujale viitamiseks kasutada muutuja nime või viitenime.
NÄIDE
|_+_|VÄLJUND
|_+_|C++ kuupäev ja kellaaeg
C++ teek ei paku õiget kuupäevatüüpi. See pärib kuupäeva ja kellaaja manipuleerimise struktuurid ja funktsioonid C-st. Kuupäeva ja kellaajaga seotud funktsioonidele ja struktuuridele juurdepääsemiseks peate oma C++ programmi lisama päisefaili.
Ajaga seotud tüüpi on neli: kell_t, aeg_t, suurus_t ja tm. Tüübid – clock_t, size_t ja time_t on võimelised esitama süsteemi kellaaega ja kuupäeva mõne täisarvuna.
NÄIDE
|_+_|Mõned olulised funktsioonid
See tagastab praeguse kalendriaja mitme sekundi jooksul, mis on möödunud 1. jaanuarist 1970. Kui süsteemil pole aega, tagastatakse .1.
See tagastab kursori vormi stringile päev kuu aasta tunnid:minutid: sekundid.
See tagastab kursori tm kohalikku aega esindav struktuur.
See tagastab väärtuse, mis vastab ligikaudsele helistamisprogrammi tööajale. Kui aega pole saadaval, tagastatakse väärtus .1.
Tagastab kursori stringile, mis sisaldab struktuuris talletatud teavet, millele osutab aeg, mis on teisendatud kujule: päev kuu kuupäev tunnid:minutid: sekundid
See tagastab kursori kellaajale tm-struktuuri kujul.
Tagastab aja järgi näidatud struktuuris leitud kalendriaja.
See arvutab vahe sekundites time1 ja time2 vahel.
Seda saab kasutada kuupäeva ja kellaaja vormindamiseks kindlas vormingus.
C++ andmestruktuurid
C++ massiivid võimaldavad määratleda muutujaid, mis ühendavad mitu sama tüüpi andmeüksust. Siiski, struktuur on veel üks kasutaja määratletud andmetüüp, mis võimaldab teil kombineerida erinevat tüüpi andmeüksusi. Kirje kujutamiseks kasutatakse struktuure.
Struktuuri määratlemine
Struktuuri määratlemiseks tuleks kasutada struct lauset. Struktuurilause määrab programmi jaoks andmetüübi, millel on rohkem kui üks liige.
|_+_|The struktuuri silt on valikuline. Definitsiooni lõpus, enne viimast semikoolonit, peaksite määrama ühe või mitu struktuurimuutujat.
Juurdepääs struktuuriliikmetele
Struktuuri mis tahes liikmele juurdepääsuks saate kasutada liikme juurdepääsu operaator (.) . Liikme juurdepääsuoperaator on kodeeritud perioodina struktuurimuutuja nime ja struktuuriliikme vahel, millele soovime juurde pääseda. Sa kasutaksid struktuur märksõna struktuuritüübi muutujate määratlemiseks.
Struktuurid kui funktsiooni argumendid
Struktuuri saate edastada funktsiooni argumendina samamoodi nagu mis tahes muud muutujat või osutit.
NÄIDE
|_+_|VÄLJUND
|_+_|C++ klassid ja objektid
Kõik C++-s on seotud klasside ja objektidega koos nende atribuutide ja meetoditega. Näiteks: päriselus on buss an objektiks . Bussil on atribuudid , nagu kaal ja värv ning meetodid , nagu ajam ja pidur.
Atribuudid ja meetodid on muutujad ja funktsioonid mis kuuluvad klassi. Neid tuntakse klassiliikmetena. Klass on kasutaja määratletud andmetüüp, mida saate programmis kasutada ja mis toimib objektikonstruktorina või objektide loomise plaanina.
Looge klass
Kui soovite klassi luua, peate kasutama klass märksõna:
NÄIDE
|_+_|Loo objekt
C++ keeles luuakse objekt klassist.
Objekti loomiseks tuleb määrata klassi nimi, millele järgneb objekti nimi. Klassi atribuutidele juurdepääsuks kasutage objektil punkti süntaksit (.):
NÄIDE
|_+_|Üksikasjalikult vähe mõisteid
C++ pärand
Pärand on protsess, mille käigus objekt omandab kõik oma algobjekti omadused ja käitumised automaatselt. Saate muuta teistes klassides määratletud atribuute ja toiminguid.
Klassi, mis pärib teise klassi liikmeid, nimetatakse tuletatud klassiks ja klassi, mille liikmed on päritud, nimetatakse baasklassiks. Tuletatud klass on baasklassi eriklass.
Pärimise tüübid
'A' on põhiklass,
'B' on tuletatud klass.



Klass D pärib klassi C ja klassi B ning samuti klassi A omadused ja käitumise. Klass C ja klass B pärib klassi A. Klass A on B-klassi ning C- ja D-klassi vanem.


C++ juurdepääsu modifikaatorid
Juurdepääsu modifikaatoreid kasutatakse objektorienteeritud programmeerimise olulise aspekti, mida nimetatakse andmete peitmiseks, rakendamiseks. Klassi juurdepääsu muutjaid kasutatakse klassi liikmetele juurdepääsu määramiseks. See seab klassi liikmetele teatud piirangud, et välisfunktsioonid ei pääseks otse juurde.
C++-s on saadaval kolme tüüpi juurdepääsu modifikaatoreid:
Arutame neid üksikasjalikult:
Avalik
Kõik avaliku spetsifikaadi all deklareeritud klassi liikmed on kõigile kättesaadavad. Avalikuks kuulutatud liikmefunktsioonidele pääsevad juurde ka teised klassid ja funktsioonid. Klassi avalikele liikmetele pääseb juurde kõikjalt programmis, kasutades juurdepääsuoperaatorit (.) selle klassi objektiga.
NÄIDE
|_+_|VÄLJUND
|_+_|Privaatne
Klassi liikmefunktsioonid pääsevad juurde ainult privaatseks kuulutatud klassi liikmetele. Neile ei pääse otse juurde ükski klassiväline objekt ega funktsioon. Ainult sõbrafunktsioonidel on juurdepääs klassi liikmete privaatsele andmetele.
NÄIDE
|_+_|VÄLJUND
|_+_|Kaitstud
Kaitstud juurdepääsu modifikaator on sama mis privaatne juurdepääsu modifikaator, kuna sellele ei pääse juurde väljaspool selle klassi, välja arvatud juhul, kui sõbraklassi abiga on erinevus selles, et kaitstuks kuulutatud klassi liikmetele pääseb juurde mis tahes tuletatud klass ka sellest klassist.
NÄIDE
|_+_|VÄLJUND
|_+_|C++ ülekoormus
C++ programmeerimiskeel võimaldab määrata a jaoks rohkem kui ühe definitsiooni funktsiooni nimi või an operaator samas ulatuses, nn funktsioonide ülekoormus ja operaatori ülekoormus , vastavalt.
Ülekoormatud deklaratsioon deklareeritakse sama nimega kui varem deklareeritud samas ulatuses, välja arvatud see, et mõlemal deklaratsioonil on erinevad argumendid ja erinevad definitsioonid.
Funktsiooni ülekoormus
Funktsioonide ülekoormamine on funktsioon, mis pakub teile rohkem kui ühte sama nime, kuid erineva parameetriloendiga funktsiooni.
NÄIDE
|_+_|VÄLJUND
|_+_|C++ polümorfism
Operaatori ülekoormus
Saate panna operaatorid töötama kasutaja määratud klasside jaoks. See tähendab, et C++ võib anda operaatoritele andmetüübi jaoks erilise tähenduse. Seda nimetatakse operaatori ülekoormuseks.
NÄIDE
|_+_|VÄLJUND
|_+_|See on objektorienteeritud programmeerimise oluline kontseptsioon. See tähendab rohkem kui ühte vormi. See tähendab, et sama üksus käitub erinevates stsenaariumides erinevalt.
Funktsiooni alistamine
Sama funktsioon võib olla nii põhiklassis kui ka tuletatud klassides. Kui kutsute funktsiooni tuletatud klassi objektiga, käivitatakse põhiklassi asemel tuletatud klassi funktsioon.
Seetõttu täidetakse sõltuvalt funktsiooni kutsuvast objektist erinevaid funktsioone. Seda nimetatakse funktsiooni alistamiseks
NÄIDE
|_+_|VÄLJUND
|_+_|C++ virtuaalsed funktsioonid
Keeles C++ ei pruugi olla võimalik funktsioone alistada, kui kasutame tuletatud klassi objektile osutamiseks baasklassi osutit.
Virtuaalsete funktsioonide kasutamine põhiklassis tagab, et funktsiooni saab sellistel juhtudel tühistada. Seega kuuluvad virtuaalsed funktsioonid funktsioonide alistamise alla.
Puhtad virtuaalsed funktsioonid
Võimalik, et soovite lisada põhiklassi virtuaalse funktsiooni, et seda saaks tuletatud klassis uuesti määratleda, et see sobiks selle klassi objektidega, kuid põhiklassi funktsiooni jaoks pole sisulist definitsiooni. .
NÄIDE
|_+_|C++ andmete abstraktsioon
Andmete abstraktsioon on üks objektorienteeritud programmeerimise põhifunktsioone C++ keeles. Abstraktsioon tähendab ainult asjakohase teabe kuvamist ja detailide peitmist. Andmete abstraktsioon viitab ainult olulise teabe esitamisele välismaailma andmete kohta, tausta üksikasjade või teostuse peitmisele.
Abstraktsioon klasside abil
Abstraktsiooni saate C++-s rakendada klasside abil. Klass aitab teil saadaolevate juurdepääsuspetsifikaatide abil andmete liikmeid ja liikmefunktsioone rühmitada. Klass saab otsustada, milline andmeliige on välismaailmale nähtav ja milline mitte.
Abstraktsioon juurdepääsuspetsifikaatide abil
Juurdepääsuspetsifikaatorid mängivad C++ abstraktsiooni rakendamisel üliolulist rolli. Saate kasutada juurdepääsuspetsifikaatoreid klassi liikmetele piirangute jõustamiseks. Näiteks:
NÄIDE
|_+_|VÄLJUND
|_+_|C++ andmete kapseldamine
See on funktsioonide ja andmeliikmete ühendamine üheks üksuseks, mida nimetatakse klassiks. Selle eesmärk on vältida otsest juurdepääsu andmetele. Juurdepääs neile on tagatud klassi funktsioonide kaudu. See on objektorienteeritud programmeerimise üks populaarsemaid funktsioone, mis aitab andmeid peita.
Selle rakendamiseks
NÄIDE
|_+_|VÄLJUND
|_+_|C++ abstraktsed klassid
C++ klass muudetakse abstraktseks, deklareerides ühe selle funktsioonidest kui elutähtsa>puhta virtuaalse funktsiooni. Puhast virtuaalset funktsiooni mainitakse selle deklaratsiooni asetamisega = 0. Tuletatud klassid peavad tagama nende rakendamise.
NÄIDE
|_+_|VÄLJUND
|_+_|C++ failid ja vood
jah ei | Andmetüüp | Kirjeldus |
üks | väljaspool voolu | See esindab väljundfailivoogu ja seda kasutatakse failide loomiseks ja failidesse teabe kirjutamiseks. |
kaks | ifstream | See esindab sisendfailivoogu ja seda kasutatakse failidest teabe lugemiseks. |
3 | fstream | See esindab failivoogu üldiselt ja sellel on nii ofstream kui ka ifstream võimalus. |
Faili avamine
Fail tuleb avada enne, kui saate seda lugeda või sellele kirjutada. Faili kirjutamiseks avamiseks võib kasutada nii fstream- kui ka vooluvälist objekti. Ifstream objekti kasutatakse faili avamiseks ainult lugemiseks.
jah ei | Režiimi lipp | Kirjeldus |
üks | ios::ate | Kogu väljund faili, mis lisatakse lõppu. |
kaks | ios::app | See avab väljundi jaoks faili ja liigutab lugemise või kirjutamise juhtelemendi faili lõppu. |
3 | ios::trunc | Kui fail on juba olemas, kärbitakse sisu enne faili avamist. |
4 | ios::out | See avab kirjutamiseks faili. |
5 | ios::in | See avab lugemiseks faili. |
SÜNTAKS
|_+_|Faili sulgemine
Kui C++ programm lõpetatakse, loputab see automaatselt kõik vood, vabastab kogu eraldatud mälu ja sulgeb kõik avatud failid.
SÜNTAKS
|_+_|Failist lugemine
Saate lugeda teavet failist oma programmi, kasutades voo ekstraheerimise operaatorit (>>). Ainus erinevus on see, et kasutate objekti cin asemel fstream või ifstream.
LOE JA KIRJUTA NÄIDE
|_+_|VÄLJUND
|_+_|Faili asukoha osutid
Nii ostream kui ka istream pakuvad liikmefunktsioone faili asukoha osuti ümberpaigutamiseks. Need liikmefunktsioonid on seekp ostream ja seekg jaoks istream. Seekp ja seekg argument on pikk täisarv. Teist argumenti võib nimetada otsimissuuna näitamiseks.
C++ erandite käsitlemine
C++ erandite käsitlemine on käitusvigade käsitlemise protsess. Te teostate erandite käsitlemise, et rakenduse tavapärane voog säiliks ka pärast käitusvigu.
C++ puhul on erand sündmus või objekt, mis visatakse käitusajal. Kõik erandid on tuletatud klassist std::exception. Kui me erandiga ei tegele, prindib see eranditeate ja lõpetab programmi.
Erandid | Kirjeldused |
std::bad_erand | Seda kasutatakse ootamatute erandite käsitlemiseks. |
std::loogika_tõrge | Seda saab tuvastada koodi lugemisega. |
std::bad_typeid | Tavaliselt visatakse see tüübi järgi. |
std::runtime_error | Seda ei saa koodi lugemisega tuvastada. |
std::erand | See on kõigi standardsete C++ erandite erand ja emaklass. |
std::bad_cast | Selle viskab tavaliselt dynamic_cast. |
std::bad_alloc | Tavaliselt visatakse see uuega. |
C++ erandite käsitlemine põhineb kolmel märksõnal: proovida, püüda, ja viskama .
NÄIDE
|_+_|C++ dünaamiline mälu
Mälu jaguneb kaheks osaks −
Programmeerijad saavad programmi töötamise ajal dünaamiliselt salvestusruumi eraldada. Sellegipoolest ei saa programmeerijad luua uusi muutujate nimesid ja sel põhjusel nõuab dünaamiline jaotamine kahte kriteeriumi:
Mälu eraldamine on samuti selle kontseptsiooni osa, kus ruumi puhastatakse muu andmesalvestuse jaoks. Dünaamilise mälu eraldamiseks võite kasutada kustutamisoperaatorit. Seega tähendab dünaamiline mälu jaotamine mälu haldamist dünaamilise mälu jaotamise jaoks käsitsi.
uus ja kustuta operaatorid
Siin võib andmetüüp olla mis tahes sisseehitatud andmetüüp, mis sisaldab massiivi, või kasutaja määratud andmetüüpidel on klass või struktuur. Alustame sisseehitatud andmetüüpidega
SÜNTAKS
|_+_|Kui tunnete muutujat, mis ei ole dünaamiliselt jaotatud ja mida enam ei nõuta, saate vabas poes mälu vabastada 'kustuta' operaator.
SÜNTAKS
|_+_|NÄIDE
|_+_|Massiivide dünaamiline mälujaotus
Kui olete programmeerijana; soovite eraldada mälu märkide massiivi jaoks sama süntaksi abil, mida saate seda teha.
NÄIDE
|_+_|Nimeruumid pakuvad teile rühmitamist nimega olemid, millel on globaalne ulatus kitsamatesse ulatustesse, andes neile nimeruumi ulatus . See võimaldab korraldada ka programmide elemente erinevatesse loogilistesse ulatustesse, millele on viidatud nimed. Nimeruum on funktsioon, mis on olemas C++-s ja puudub C-s. Lubatud on mitu sama nimega nimeruumiplokki. Kõik plokkides olevad deklaratsioonid deklareeritakse nimetatud ulatuses.
SÜNTAKS
|_+_|NÄIDE
|_+_|VÄLJUND
|_+_|Katkestatavad nimeruumid
Nimeruum on määratletud mitmest osast ja nimeruum koosneb selle määratletud osade summast. Nimeruumi eraldi osad on jaotatud mitme faili vahel.
SÜNTAKS
|_+_|Pesastatud nimeruumid
Siin saate määratleda ühe nimeruumi teises nimeruumis
SÜNTAKS
|_+_|NÄIDE
|_+_|C++ mallid
Mall on C++ funktsioon, mis pakub teile üldiste programmide kirjutamist. Teisisõnu saate mallide abil erinevate andmetüüpidega töötamiseks luua ühe funktsiooni või klassi. Malle kasutatakse suuremas koodibaasis koodi paindlikkuse ja programmide korduvkasutatavuse tagamiseks.
Neid mõisteid kasutatakse kahel viisil:
Funktsioonide mallid
Funktsioonimall töötab täpselt nagu tavaline funktsioon, ühe olulise erinevusega.
Üks funktsioonimall võib töötada erinevate andmetüüpidega, kuid üks tavaline funktsioon võib töötada ühe andmetüüpide komplektiga.
Tavaliselt, kui soovite teha identseid toiminguid mitut tüüpi andmetega, saate funktsiooni deklaratsiooniga funktsioonide loomiseks kasutada funktsioonide ülekoormust.
Parem oleks siiski kasutada funktsioonimalle, kuna saate teha sama ülesande, kirjutades vähem ja hooldatavat koodi.
NÄIDE
|_+_|VÄLJUND
|_+_|Klassi mallid
Sarnaselt funktsioonimallidele saate klassioperatsioonide jaoks luua klassimalle. Tavaliselt peate iga andmetüübi jaoks looma erineva klassi VÕI looma ühes klassis teised liikmemuutujad ja -funktsioonid.
See ajab teie koodibaasi tarbetult täis ja seda on raske hooldada, kuna ühte klassi/funktsiooni tuleb muuta kõigis klassides/funktsioonides. Kuigi klassimallide abil on lihtne kasutada sama koodi kõigi andmetüüpide jaoks.
NÄIDE
|_+_|VÄLJUND
|_+_|C++ eelprotsessorid
Eeltöötlusjuhised on programmide koodis olevad read, millele eelneb räsimärk (#). Need read ei ole programmeeritud laused, vaid eeltöötleja käsud. Eelprotsessor uurib koodi enne koodi kompileerimise algust ja lahendab kõik direktiivid enne, kui tavalised avaldused mis tahes koodi genereerivad.
Eelprotsessori direktiivid ulatuvad üle ühe koodirea. Niipea kui reavahetusmärk on leitud, lõpetatakse eeltöötluse direktiiv.
Eelprotsessori käske on 4 peamist tüüpi:
makro
Makrod on kooditükk, millele on antud mingi nimi. Iga kord, kui kompilaator seda nime kohtab, asendab see selle nime tegeliku koodiosaga. Makro määratlemiseks kasutatakse käsku #define.
NÄIDE
|_+_|VÄLJUND
|_+_|Eelmääratletud C++ makrod
See sisaldab programmi rea numbrit programmi koostamisel.
See sisaldab programmi praegust failinime selle kompileerimise ajal.
See sisaldab stringi, mis on lähtefaili objektikoodiks tõlkimise kuupäev.
See sisaldab stringi tund: minut: sekund, mis on aeg, mil programm koostati.
Faili kaasamine
See eelprotsessori direktiiv käsib kompilaatoril programmi lisada faili. Kasutaja säilitab programmis kahte tüüpi faile:
Tingimuslik koostamine
See aitab koostada programmi kindlat osa või mõne tingimuse alusel mõne konkreetse programmiosa kompileerimise vahele jätta.
SÜNTAKS
|_+_|Muud direktiivid
Lisaks ülalmainitud direktiividele on siin veel kaks direktiivi, mida tavaliselt ei kasutata. Need on:
C++ signaalitöötlus
Signaalid on katkestused, mida operatsioonisüsteem pakub protsessile, mis lõpetab programmi enneaegselt. Vajutades UNIX-is Ctrl+C, LINUX , Mac OS X või Windows masin, saate luua katkestusi.
On signaale, mida tarkvara ei suuda tuvastada, kuid on olemas signaalide loend, mida saate oma programmis püüda ja võtta vastuvõetavaid signaalipõhiseid toiminguid. C++ päisefail kirjeldab neid signaale.
jah ei | Signaal | Kirjeldus |
üks | SIGFPE | Vigane aritmeetiline tehe, nt nullvahe või ületäitmistehte. |
kaks | SIGABRT | Ebanormaalne programmi lõpetamine, nt katkestamiskutse. |
3 | SIGINT | Interaktiivse fookuse signaali vastuvõtmine |
4 | SEAL | Ebaseadusliku juhise avastamine. |
5 | SIGTERM | Esitas programmile lõpetamise taotluse. |
6 | SIGSEGV | Kehtetu juurdepääs kettale. |
Signaali() funktsioon
C++ signaalitöötlusteek sisaldab signaali funktsiooni ettearvamatute sündmuste püüdmiseks.
SÜNTAKS
|_+_|NÄIDE
|_+_|VÄLJUND
|_+_|Tõste() funktsioon
Funktsiooni rise() abil, mis võtab argumendina täisarvu signaali, saate signaale toota.
SÜNTAKS
|_+_|NÄIDE
|_+_|VÄLJUND
|_+_|Mitme lõimega töötlemine on spetsiaalne multitegumtöötluse tüüp ja funktsioon, mis võimaldab teie masinal samaaegselt käitada kahte või enamat programmi, on multitegumtöötlus. Üldiselt on kahte tüüpi multitegumtöötlust: protsessipõhine ja lõimepõhine. Programmide paralleelset täitmist käsitleb protsessipõhine multitegumtöötlus. Lõimedel põhinev multitegumtöötlus tegeleb sama programmi osade paralleelse täitmisega. Mitme lõimega programmis on kaks või kolm komponenti, mis töötavad samaaegselt.
SÜNTAKS
|_+_|JAH EI | Parameeter | Kirjeldus |
üks | vihane | Üksik väljavõte, mille saab rutiinalgatuseks edastada. Võrdluseks tuleb see üle kanda kui kursorit, mille tüüp on tühine. NULL-i saab kasutada, kui liigutamiseks pole argumenti. |
kaks | niit | Läbipaistmatu spetsiaalne identifikaator praeguse lõime jaoks, mille alamprogramm tagastab. |
3 | attr | Nähtamatu objekti atribuut, mida saab kasutada lõime atribuutide määramiseks. Saate määratleda niidi omadustega objekti või vaikeväärtustega NULL-i. |
4 | start_rutiin | Kui C++ rutiin on loodud, siis lõim käivitub. |
Lõpetavad lõimed
POSIX-i lõime lõpetamiseks kasutame järgmist rutiini:
|_+_|Siin kasutatakse lõimest otse väljumiseks pthread exit. Tavaliselt, kui lõim on oma töö lõpetanud ja seda enam funktsioneerimiseks ei vajata, antakse pthread exit() rutiinile nimi.
Kui main() lõpetab ja väljub pthreadiga exit() enne selle loodud lõime, võivad teised lõimed hakata jooksma. Vastasel juhul kui main() lõpeb, lõpetatakse need kohe
Keermete sisenemine ja eraldumine
Järgitakse kahte rutiini, mida saame kasutada lõimede sisestamiseks või eemaldamiseks.
|_+_|Alamprogramm pthread join() blokeerib kutsuva lõime, kuni lõime 'threadid' lõpetatakse. Üks selle atribuutidest määrab, kas see on niidi moodustamisel ühendatav või eraldatav. Seda saab ühendada ainult lõimedega, mis on loodud ühendatavatena. Seda ei saa kunagi ühendada, kui niit on moodustatud nii, et see on eraldatud.
C++ veebiprogrammeerimine
Ja mis on CGI?
Juhiste kogum, mis kirjeldab teabe jagamist veebiserveri ja kohandatud skripti vahel, on tüüpiline lüüsi liides ehk CGI. Väliste lüüsisüsteemide jaoks on Generic Gateway Interface ehk CGI standard teabeserveritega, näiteks HTTP-serveritega, ühendamiseks. CGI/1.1 on uusim versioon ja CGI/1.2 on väljatöötamisel.
Internetis sirvimine
Vaatame, mis juhtub, kui vajutame CGI kontseptsiooni mõistmiseks teatud veebilehe või URL-i sirvimiseks hüperlinki. Teie brauser võtab ühendust HTTP-veebiserveriga ja nõuab URL-i, st failinimede kaupa. Veebiserver analüüsib URL-i ja otsib failinime. Kui soovitud fail leitakse, edastab veebiserver faili tagasi brauserisse, vastasel juhul saadab tõrketeate, mis ütleb, et taotlesite kehtetu faili.
Populaarse lüüsi liides (CGI) on põhiprotokoll, mis võimaldab rakendustel suhelda veebiserverite ja klientidega. Neid CGI programme on võimalik kirjutada Python, PERL, Shell, C või C++ jne keeles.
NÄIDE
|_+_|Veebiserveri konfiguratsioon
Enne CGI programmeerimisega jätkamist veenduge, et veebiserver aktsepteerib CGI-d ja et see on loodud CGI-programmide jaoks. Paljud CGI-programmid, mida HTTP-server töötab, asuvad eelkonfigureeritud kataloogis. Seda kataloogi nimetatakse CGI kataloogiks ja selle nimi on kokkuleppeliselt /var/www/cgi-bin. CGI-failide laiendid on kokkuleppeliselt .cgi, kuigi neid saab käivitada ka C++-ga.
HTTP päised
Seadistage stringi läbiv küpsis.
Ressursi viimase värskenduse kuupäev.
Tagastatud andmete pikkus baitides. Faili ligikaudse laadimisaja teatamiseks kasutab brauser seda väärtust.
MIME-string, mis määrab stringi vormingu
URL, mis tuleks tagastada, mitte taotletud URL. Seda faili kasutatakse päringu ümbersuunamiseks teise faili.
Päev, mil andmed muutusid kasutuks. Brauser peaks seda kasutama selleks, et otsustada, kas veebisaiti tuleb värskendada.
Keskkonnamuutujad
GET ja POST meetodid
Kui proovite brauserist veebiserverisse ja lõpuks CGI-rakendusse mis tahes üksikasju edastada, peate kokku puutuma teatud stsenaariumidega. Selle teabe edastamiseks veebiserverisse kasutab brauser kõige sagedamini kahte lähenemisviisi. Need lähenemisviisid on GET-meetod ja POST-meetod.
URL-i NÄIDE HANKIMISE meetod
|_+_|Küpsiste kasutamine
HTTP-protokoll on kodakondsuseta protokoll. Kuid kommertsveebisaidil on oluline säilitada seansiandmeid erinevate saitide vahel. Näiteks ühe kasutaja registreerimine lõpeb pärast mitme lehe täitmist. Kuid kuidas säilitada seansi üksikasju kasutaja jaoks kõigil veebisaitidel. Kõige usaldusväärsem viis huvide, müügi, vahendustasude ja muude külastuskogemuse või saidi statistika parandamiseks vajalike üksikasjade meeldejätmiseks ja jälgimiseks on teatud juhtudel kasutada küpsiseid.
Küpsise kujul edastab teie server mõned andmed külastaja aknasse. Brauser kiidab küpsise heaks. Kui see on nii, salvestatakse see külastaja kõvakettale lihtteksti arhiivina. Nüüd on küpsis taastamiseks valmis, kui kasutaja külastab teie veebis teist lehte. Taastamisel on salvestatu serverile teada/mäletatud.
Faili üleslaadimise näide
|_+_|Järeldus
Sellega jõuame selle C++ õpetuse lõpuni. Loodetavasti aitas see teil mõista C++ programmeerimise põhitõdesid.