Programování

C++ kurz pro začátečníky

30. října 2021

Obsah

Co je C++?

C++ je multiplatformní jazyk, který se používá k vytváření vysoce výkonných aplikací. Bjarne Stroustrup jej vyvinul jako rozšíření jazyka C. C++ dává programátorům kontrolu nad systémovými prostředky a pamětí. Jazyk byl třikrát významně aktualizován v letech 2011, 2014 a 2017 na C++11, C++14 a C++17.

Proč používat C++

  • C++ je jedním z nejoblíbenějších programovacích jazyků.
  • C++ lze nalézt v operačních systémech, GUI a vestavěných systémech.
  • Jedná se o objektově orientovaný programovací jazyk, který dává programům jasnou strukturu a umožňuje opětovné použití kódu, čímž se snižují náklady na vývoj.
  • Je přenosný a lze jej použít k vývoji aplikací, které lze přizpůsobit více platformám.
  • Protože C++ je blízké C# a Jáva , usnadňuje programátorům přechod na C++ nebo naopak.

Funkce

    Jednoduchý: C++ je jednoduchý jazyk, protože poskytuje strukturovaný přístup k bohaté sadě funkcí, datových typů atd.Přenosný: Na rozdíl od jazyka symbolických instrukcí jsou programy c prováděny na mnoha strojích s malými nebo žádnými změnami. Není však platformově nezávislý.Programovací jazyk střední úrovně: C++ se používá k nízkoúrovňovému programování. Používá se k vývoji aplikací, jako je jádro, ovladač atd. Podporuje také funkci vysokoúrovňového jazyka.Strukturovaný programovací jazyk: C++ je strukturovaný programovací jazyk, protože můžete program rozdělit na části pomocí funkcí.Bohatá knihovna: C++ poskytuje vestavěné funkce, které urychlují vývoj.Správa paměti: Nabízí vám funkci dynamického přidělování paměti. Alokovanou paměť můžete uvolnit voláním funkce free().Rychlost: Doba kompilace a provádění jazyka C++ je rychlá.Ukazatel: C++ nabízí funkci ukazatelů. S pamětí můžete přímo interagovat pomocí ukazatelů.Rekurze: V C++ můžete funkci volat v rámci funkce. Poskytuje opětovnou použitelnost kódu pro každou funkci.Rozšiřitelný: Jazyk C++ je rozšiřitelný, protože dokáže rychle přijmout nové funkce.Objektově orientované: C++ je objektově orientovaný programovací jazyk. OOPs usnadňuje údržbu a vývoj, zatímco v procedurálně orientovaném programovacím jazyce to není snadné spravovat, zda kód roste s projektem velikost se zvětšuje.Na základě kompilátoru: Jedná se o programovací jazyk založený na kompilátoru. Nejprve musíte program zkompilovat pomocí kompilátoru a poté můžete program spustit.

Nastavení místního prostředí

Bylo by dobré, kdybyste měli v počítači následující software.

    Kompilátor C++

Je to skutečný kompilátor C++, který bude použit ke kompilaci vašeho zdrojového kódu do konečného spustitelného programu. Většinu kompilátorů C++ nezajímá, jaké rozšíření dáte svému zdrojovému kódu. Nejčastěji používaným kompilátorem je kompilátor GNU C/C++.

    Textový editor

Používá jej software k psaní. Příklady zahrnují Windows Notepad, OS Edit, Short, Epsilon, EMACS a příkazy Vim nebo VI. Soubory, které vygenerujete pomocí editoru, se označují jako zdrojové soubory a soubory C++ se označují jako .cpp, .cp nebo .c. Chcete-li začít s programováním v C++, musí být na místě textový editor.

    Základní syntaxe

Podívejme se nyní na to, co znamenají třída, objekt, metody a proměnné instance.

    Objekt− Objekty mají stavy a chování. Příklad: Kočka má podmínky – barvu, jméno, plemeno a činy – vrtění, mňoukání, jídlo. Objekt je instancí třídy.Třída− Třída je definována jako plán, který popisuje chování/stavy, které objekt svého typu podporuje.Metody− Metoda je chování. Třída může obsahovat mnoho metod. V metodách, kde se zapisuje logika, se manipuluje s daty a provádějí se akce.Proměnné instance− V každém objektu existuje jedinečná sbírka proměnných instance. Stav entity je generován hodnotami přiřazenými těmto vzorovým proměnným.

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

Podívejme se na různé části programu zmíněné výše −

  • Vyžaduje to záhlaví.
  • Použijte jmenný prostor std; varovat kompilátor, aby používal jmenný prostor std.
  • Line int main() je hlavní funkcí, kde se spustí provádění programu.
  • Další řádek přeruší na<< Hello World; the word Hello World is reflected on the keyboard.
  • Další řádek vrátí 0; funkce main() skončí.

C++ Základní vstup/výstup

C++ I/O operace využívá koncept streamu. Proud je posloupnost bajtů nebo tok dat. Díky tomu je výkon rychlý.

Pokud bajty proudí z hlavní paměti do zařízení, jako je tiskárna, obrazovka nebo síťové připojení atd., jedná se o tzv. výstupní provoz.

Pokud bajty proudí ze zařízení, jako je tiskárna, obrazovka, síťové připojení atd., do hlavní paměti, jedná se o tzv. vstupní operace.

Standardní výstupní proud (cout)

The náklady je předdefinovaným objektem ostream třída. Je spojen s výstupním zařízením, kterým je obvykle obrazovka. Cout se používá ke spojení s operátorem vkládání proudu k zobrazení výstupu na konzole

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

Standardní vstupní proud (cin)

The gin je předdefinovaný objekt. Je spojen se vstupním zařízením, kterým je obvykle klávesnice. Cin se používá pro připojení operátora extrakce streamu (>>) ke čtení vstupu konzoly.

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

Standardní koncová čára (endl)

The endl je předdefinovaný objekt třídy. Používá se k vložení nových řádkových znaků a vyprázdnění proudu.

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

Proměnné C++

Proměnná je název místa v paměti. Slouží k ukládání dat. Hodnotu lze změnit a je mnohokrát znovu použita. Je to způsob, jak znázornit paměťové místo pomocí symbolu, aby bylo snadno identifikovatelné. Proměnná může mít abecedu, podtržítko a číslice. Název proměnné může začínat pouze abecedou a podtržítkem. Nemůže začínat číslicí.

V názvu proměnné nejsou povoleny žádné mezery.

Název proměnné nesmí být žádné vyhrazené slovo nebo klíčové slovo, např. char, float atd.

Platné názvy proměnných:

  • int a;
  • int _ab;
  • int a30;

Neplatné názvy proměnných:

  • int 4;
  • intxy;
  • int double;

C++ identifikátory

Identifikátor C++ se používá k identifikaci proměnné, funkce, třídy, modulu nebo jakékoli jiné položky definované uživatelem. Začíná písmeny A až Z nebo a až z nebo podtržítkem (_), po kterém následuje nula nebo více písmen a 0 až 9. C++ nepovoluje interpunkční znaménka jako @, $ a % v rámci identifikátorů. Je to programovací jazyk citlivý na velká a malá písmena. Workforce a workforce jsou tedy dva různé identifikátory v C++.

C++ datové typy

TypKlíčová slova
Charakterchar
Booleanbool
Plovoucí bodplovák
Dvojitá plovoucí desetinná čárkadvojnásobek
Celé čísloint
Bezcennýprázdnota
Široký charakterwchar_t
Typ Typická bitová šířka Typický rozsah
char1 bajt-127 až 127 nebo 0 až 255
nepodepsaný char1 bajt0 až 255
podepsaný char1 bajt-127 až 127
wchar_t2 nebo 4 bajty1 široký znak
int4 byty-2147483648 až 2147483647
nepodepsaný int4 byty0 až 4294967295
podepsané int4 byty-2147483648 až 2147483647
krátký int2 bajty-32768 až 32767
plovák4 byty
unsigned short int2 bajty0 až 65 535
podepsané krátké int2 bajty-32768 až 32767
dlouhá int8 bajtů-2 147 483 648 až 2 147 483 647
podepsané dlouhé int8 bajtůstejné jako long int
unsigned long int8 bajtů0 až 4,294,967,295
dlouhý dlouhý int8 bajtů-(2^63) až (2^63)-1
unsigned long long int8 bajtů0 až 18 446 744 073 709 551 615
dvojnásobek8 bajtů
dlouhý dvojitý12 bajtů

C++ konstanty/literály

Konstanty se vztahují k pevným hodnotám, které může program změnit, a nazývají se literály.

Konstanty mohou být libovolného z nezpracovaných datových typů a jsou rozděleny na celočíselné číslice, znaky, číslice s plovoucí desetinnou čárkou, řetězce a booleovské hodnoty.

Celočíselné literály

Celočíselný literál je desetinná, osmičková nebo šestnáctková konstanta.

Celočíselný literál má příponu, která je kombinací L a U pro dlouhé a bez znaménka. Přípona může být malá nebo velká a může být v libovolném pořadí.

Např.: 212, 215u, 0xFeeL, 078, 032UU

Literály s plovoucí desetinnou čárkou

Literál s plovoucí desetinnou čárkou má celočíselnou část, zlomkovou část, desetinnou čárku a exponent. Literály s plovoucí desetinnou čárkou můžete reprezentovat v desítkové nebo exponenciální formě.

Při reprezentaci pomocí desetinného tvaru musíte zahrnout desetinnou čárku, exponent nebo obojí. Při použití exponenciálního tvaru musíte mít zlomkovou část, celočíselnou část nebo obojí. Exponent se znaménkem je uvozen E nebo e.

Booleovské literály

Existují dva booleovské literály

  • Hodnota true představující true.
  • Hodnota false představující false.

Charakterové literály

Znakové literály jsou uzavřeny v jednoduchých uvozovkách. Pokud literál začíná písmenem L, jedná se o literál o širokých znacích a měl by být uložen v proměnné typu wchar_t. Jinak jde o úzký znakový literál a je uložen v jednoduché proměnné typu char.

Úniková sekvence Význam
\ znak
'‘ postava
charakter
?? charakter
aUpozornění nebo zvonek
Backspace
FZdroj formuláře
Nový řádek
Návrat vozíku
Vodorovná karta
protiVertikální záložka
oooOsmičkové číslo od jedné do tří číslic
xhh . . .Hexadecimální číslo skládající se z jedné nebo více číslic

Třídy úložiště C++

Třída automatického ukládání

Je to výchozí třída úložiště pro všechny lokální proměnné.

SYNTAX

|_+_|

Registr Storage Class

Používají se k definování lokálních proměnných, které jsou uloženy v registru namísto paměti RAM. Znamená to, že proměnná má maximální velikost rovnou velikosti registru a nelze na ni použít operátor ‚&‘.

SYNTAX

|_+_|

Statická třída úložiště

Říká kompilátoru, aby ponechal lokální proměnnou v existenci během programu, místo aby ji vytvářel a ničil. Takže nastavení statických lokálních proměnných jim nabízí zachování jejich hodnot mezi voláními funkcí.

Třída externího úložiště

Používá se k uvedení odkazu na globální proměnnou, která je viditelná pro každý soubor programu. Když použijete „extern“, proměnnou nelze inicializovat.

Proměnlivá třída úložiště

Proměnný specifikátor se vztahuje na objekty třídy. Nabízí členu objektu přepsat členskou funkci const. To znamená, že proměnlivý člen může být upraven pomocí funkce const.

Typy modifikátorů C++

C++ nabízí datové typy char, int a double, aby jim předcházely modifikátory. Modifikátor se používá ke změně významu základního typu tak, aby přesněji odpovídal potřebám různých situací.

Modifikátory datových typů jsou uvedeny níže -

  • podepsaný
  • nepodepsaný
  • dlouho
  • krátký

Modifikátory se znaménkem, bez znaménka, dlouhý a krátký se aplikují na základní typy celých čísel. Navíc, podepsané a nepodepsané se použijí na char a long na double.

Modifikátory se znaménkem a bez znaménka se používají jako předpony dlouhých nebo krátkých modifikátorů.

Typy kvalifikátorů

    konst: Objekty typu konst nelze programem během provádění změnit.nestálý: Úprava nestálý říká kompilátoru, že hodnota proměnné může být změněna způsoby, které nejsou explicitně specifikovány programem.omezit: Ukazatel kvalifikovaný podle omezit je jediným prostředkem, kterým lze přistupovat k objektu, na který ukazuje. C99 přidává nový typ kvalifikátoru zvaný restrikce.

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

Operátoři v C++

Operátor je symbol, který pomáhá kompilátoru provádět specifické matematické nebo logické manipulace. C++ má různé vestavěné operátory a nabízí následující typy operátorů −

  • Aritmetický operátor
  • Logický operátor
  • Bitový operátor
  • Operátor přiřazení
  • Relační operátor
  • Různý operátor

Aritmetický operátor

Aritmetické operátory nejsou nic jiného než operátory, které se používají k provádění aritmetických operací mezi proměnnými nebo dvěma hodnotami.

Operátoři Popis Syntax
+Přidá dva operandya+b
*Vynásobí dva operandya*b
Odečte dva operandya-b
/Vydělí první operand druhýma/b
%Vrátí zbytek, když je první operand dělen druhýma%b
++Zvyšuje celočíselnou hodnotu o jednua++
Snižuje celočíselnou hodnotu o jednuna-

Logický operátor

Logické operátory v C++ kombinují pravdivé nebo nepravdivé hodnoty proměnných, takže můžete zjistit jejich výslednou pravdivostní hodnotu.

Operátoři Popis Syntax
Nebo (||)True, pokud je některý z operandů pravdivý(A || B) je pravda.
A (&&)True, pokud jsou oba operandy pravdivé(A && B) je nepravda.
ne (!)Pokud je podmínka pravdivá, pak logický operátor NOT nastaví nepravdu.!(A && B) je pravda.

Bitový operátor

V C++ bitové operátory provádějí bitové výpočty na celých číslech. Bitový operátor: Vrátí 1, pokud jsou oba bity 1, jinak 0. Příklad: a = 10 = 1010 (binární) b = 4 = 0100 (binární a & b = 1010 & 0100 = 0000 = 0 (desítkové) Bitový nebo operátor: Vrátí 1, pokud je jeden z bitů 1, jinak 0.

Operátoři Popis Syntax
>>Binární pravý posuv x>>x>>
<< Binární levý posunX<<
^Binární XORx ^ y
&Binární ANDx & y
|Binární ORx | Y
~Binární NE~x

Operátor přiřazení

Operátory přiřazení přiřazují hodnoty proměnným. a = 5 je operátor přiřazení, který nastavuje hodnotu 5 vpravo na proměnnou an vlevo.

Operátoři Popis Syntax
=Přiřazení hodnot výrazu pravé strany operandu levé strany.a=b+c
+=Přidejte operand na pravé straně s operandem na levé straně a poté přiřaďte k levému operandu.a+=b a=a+b
-=Odečtěte pravý operand od levého a poté jej přiřaďte levému operandu.a-=b a=a-b
/=Rozdělte levý operand pravým operandem a poté přiřaďte levému operandu.a/=b a=a/b
%=Vezměte modul pomocí levého a pravého operandu a výsledek přiřaďte levému operandu.a%=b a=a%b
*=Vypočítejte hodnotu exponentu pomocí operandů a přiřaďte hodnotu levému operandu.a*=b a=a*b
&=Provádí bitový součin s operandem a přiřazuje hodnotu levému operandu.a&=b a=a&b
|=Provede bitové OR na operandu a přiřadí hodnotu levému operandu.a|=b a=a|b
^=Provede bitové OR na operandu a přiřadí hodnotu levému operandu.a^=b a=a^b
>>=Proveďte bitový posun doprava na operandu a přiřaďte hodnotu levému operandu.a>>=b a=a>>b
<<=Provede bitový posun doleva na operandu a přiřadí hodnotu levému operandu.na<<= b a= a << b

Relační operátor

Relační operátory jsou operátory, které se používají k porovnání dvou hodnot nebo objektů.

Operátoři Popis Syntax
>Větší nežx > y
<Méně nežX
==Rovnat sex == y
!=Ne rovnéx != y
>=Větší než nebo rovnox >= y
<= Menší nebo rovnoX<= y

Různí operátoři

Operátor Popis
Stav? X: YPokud je podmínka pravdivá, vrátí hodnotu X, jinak vrátí hodnotu Y.
,Způsobí provedení sekvence operací. Hodnota čárky je hodnota posledního výrazu v seznamu oddělená čárkou.
velikostVrací velikost proměnné. Například sizeof(a), kde „a“ je celé číslo a vrátí 4.
*Je to ukazatel na proměnnou. Například *var; bude ukazovat na proměnnou var.
ObsazeníPřevádí jeden datový typ na jiný.
. (tečka) a -> (šipka)Používají se k odkazování na jednotlivé členy tříd, struktur a odborů.
&Vrací adresu proměnné.

C++ smyčky

pro smyčku

Cyklus C++ for se používá k několikanásobnému opakování části programu. Pokud je počet iterací pevný, doporučuje se použít smyčku for než smyčku while nebo do-while.

Cyklus for C++ je stejný jako C/C#. Můžeme inicializovat proměnné, kontrolovat podmínku a zvyšovat/snižovat hodnotu.

SYNTAX

|_+_|

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

Nested For Loop

V C++ můžete použít smyčku for uvnitř jiné smyčky for. Je známá jako vnořená smyčka for. Vnitřní smyčka se plně provede, když se vnější smyčka provede jednou. Pokud se tedy vnější smyčka a vnitřní smyčka provedou čtyřikrát, vnitřní smyčka se provede čtyřikrát pro každou vnější smyčku, tj. celkem 16krát.

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

Zatímco smyčka

V C++ se smyčka while používá k několikanásobnému opakování části programu. Pokud není počet iterací pevně daný, doporučuje se použít cyklus while spíše než cyklus for.

SYNTAX

|_+_|

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

Vnořená smyčka

V C++ můžete použít smyčku while uvnitř jiné smyčky while; je známá jako vnořená smyčka while. Vnořená smyčka while se provede, když se jednou provede vnější smyčka.

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

Do-while smyčka

Cyklus do-while v C++ se používá k několikanásobnému opakování části programu. Pokud není počet iterací pevně daný a musíte provést cyklus alespoň jednou, doporučuje se použít cyklus do-while.

Cyklus do-while v C++ se provede alespoň jednou, protože podmínka se kontroluje za tělem smyčky.

SYNTAX

|_+_|

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

Vnořená smyčka Do-While

Pokud v C++ použijete smyčku do-while uvnitř jiné smyčky do-while, je známá jako vnořená smyčka do-while. Vnořená smyčka do-while je plně provedena pro každou vnější smyčku do-while.

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

Rozhodovací prohlášení

V reálném životě jsou situace, kdy potřebujete udělat nějaká rozhodnutí a na základě těchto rozhodnutí se rozhodnete, co byste měli dělat dál. Podobné problémy vznikají při programování také tam, kde potřebujete udělat nějaká rozhodnutí a na základě těchto rozhodnutí spustíte další blok kódu.

Rozhodovací příkazy v programovacích jazycích rozhodují o směru toku provádění programu. Rozhodovací příkazy dostupné v C++ jsou:

  • if prohlášení
  • pokud..jiné výroky
  • vnořené příkazy if
  • kdyby-jinak-li žebřík
  • Skokové příkazy:
    • přestávka
    • pokračovat
    • jít do
    • vrátit se

if prohlášení

if statement je jednoduchý rozhodovací výrok. Slouží k rozhodnutí, zda bude blok příkazů proveden nebo ne. Pokud je podmínka pravdivá, pak se provede blok příkazu, jinak ne.

SYNTAX

|_+_|

Tady, podmínky po vyhodnocení bude buď pravda, nebo nepravda. if akceptuje booleovské hodnoty.

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

pokud jinak prohlášení

Příkaz if říká, že pokud je podmínka pravdivá, provede blok příkazů a pokud je podmínka nepravdivá, nevykoná se. Příkaz else s příkazem if můžete použít k provedení bloku kódu, když je podmínka nepravdivá.

SYNTAX

|_+_|

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

Vnořené příkazy if

Vnořený if v C++ je příkaz if, který cílí na jiný příkaz if. Vnořené příkazy if znamenají, že příkaz if uvnitř jiného příkazu if. Ano, C i C++ nám nabízejí vnořené příkazy if v příkazech if, tj. příkaz if můžete umístit do jiného příkazu if.

SYNTAX

|_+_|

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

kdyby-jinak-li žebřík

Uživatel se může rozhodnout mezi různými možnostmi. Příkazy if se provádějí shora dolů. Jakmile podmínky ovládnou if je pravdivé, pak se provede příkaz s tím spojený a zbytek else-if žebříčku je ukončen. Pokud podmínky nejsou pravdivé, provede se poslední a poslední výpis.

SYNTAX

|_+_|

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

Skokové příkazy

Přestávka

Tento příkaz se používá k ukončení smyčky. Jakmile se v rámci smyčky objeví příkaz break, iterace smyčky se tam zastaví a řízení se okamžitě vrátí k prvnímu příkazu za smyčkou.

SYNTAX
Přestávka;

Příkazy break se používají v situacích, kdy si nejsme jisti skutečným počtem iterací pro smyčku nebo kdy smyčku ukončíme na základě nějaké podmínky.

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

Pokračovat

Příkaz continue je opakem příkazu break; místo ukončení smyčky vynutí další iteraci smyčky.

Příkaz continue vynutí smyčku, aby provedla další iteraci. Po provedení příkazu continue je kód uvnitř smyčky následující po příkazu continue přeskočen a začne další iterace.

SYNTAX

|_+_|

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

Jít do

Příkaz goto v C++ odkazuje na příkaz nepodmíněného skoku, který se používá ke skoku z jednoho bodu do druhého v rámci funkce.

SYNTAX

|_+_|

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

Vrátit se

Return v C++ vrací funkci tok provádění. Tento příkaz nepotřebuje žádné podmíněné příkazy. Jakmile je příkaz proveden, tok programu se okamžitě zastaví a vrátí ovládací prvek z místa, kde byl volán. Příkaz return může nebo nemusí vrátit nic pro funkci void, ale pro funkci bez zrušení musí být vrácena návratová hodnota.

SYNTAX

|_+_|

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

Funkce C++

Funkce odkazuje na skupinu příkazů, které převezmou vstup, zpracují jej a vrátí výstup. Cílem funkce je kombinovat úkoly, které se dělají znovu a znovu. Pokud máte různé vstupy, nemusíte znovu psát stejný kód. Funkci můžete volat s jinou sadou dat známou jako parametry.

Program C++ má alespoň jednu funkci, funkci main().

Definování funkce

Definice funkce v C++ se skládá z hlavičky funkce a těla.

    Typ návratu− Může vrátit hodnotu. Některé funkce provádějí operace bez vrácení hodnoty. V tomto případě je return_type klíčové slovo prázdnota .Název funkce− Je to skutečný název funkce. Název funkce a seznam společně tvoří podpis funkce.Parametry− Parametr je jako zástupný symbol. Když je funkce vyvolána, předáte hodnotu parametru. Tato hodnota je známá jako skutečný parametr nebo argument. Seznam parametrů odkazuje na pořadí, typ a počet parametrů funkce.Tělo funkce− Tělo obsahuje kolekci příkazů, které definují, co funkce dělá.

PŘÍKLAD

|_+_|

Deklarace funkce

V C++ musí být funkce před použitím deklarovány. Funkci můžete deklarovat zadáním její návratové hodnoty, názvu a typů pro její argumenty. Termíny argumentů jsou volitelné. Definice funkce se počítá jako deklarace funkce.

PŘÍKLAD

|_+_|

Volání funkce

Při vytváření funkce C++ definujete, co má funkce dělat. Chcete-li použít funkci, musíte ji zavolat nebo vyvolat.

Když program volá funkci, řízení programu se přenese na volanou funkci. Volaná funkce provede definovanou úlohu a když je proveden její příkaz return nebo když je dosaženo její uzavírací složené závorky na konci funkce, vrátí řízení programu hlavnímu programu.

PŘÍKLAD

|_+_|

Funkční argumenty

Pokud funkce používá argumenty, měla by deklarovat proměnné, které přijímají hodnoty argumentů. Tyto proměnné jsou známé jako formální parametry funkce.

    Volejte podle hodnoty: Zkopíruje skutečnou hodnotu argumentu do formálního parametru funkce. Změny provedené v parametru uvnitř funkce nemají vliv na argument.Volání pomocí ukazatele: Zkopíruje adresu argumentu do formálního parametru. Uvnitř této funkce se adresa používá pro přístup k argumentu použitému ve volání. Znamená to, že změny provedené v parametru ovlivní argument.Volejte podle reference: Zkopíruje odkaz na argument do formálního parametru. Uvnitř této funkce se odkaz používá pro přístup k argumentu použitému ve volání. To znamená, že změny provedené v parametru ovlivní argument.

C++ Čísla

Obvykle, když pracujeme s Numbers, používáme primitivní datové typy jako int, short, long, float, double atd. Počet datových typů, jejich možné hodnoty a číselné rozsahy byly vysvětleny při diskuzi o datových typech C++.

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

Matematické operátory v C++

ANO NE Funkce Účel
jeden dvojitý hřích (dvojitý);Vezme úhel (jako dvojnásobek) a vrátí sinus.
dva double cos(double);Vezme úhel (jako dvojnásobek) a vrátí kosinus.
3 double tan(double);Vezme úhel (jako dvojnásobek) a vrátí tečnu.
4 double pow(double, double);První je číslo, které chcete zvýšit, a druhé je síla, kterou si přejete zvýšit
5 double log(double);Vezme číslo a vrátí přirozený logaritmus tohoto čísla.
6 double hypot(double, double);Pokud projdete touto délkou dvou stran pravoúhlého trojúhelníku, vrátí vám délku přepony.
7 double sqrt(double);Předáte funkci číslo a ta vám dá druhou odmocninu.
8 int abs(int);Vrací absolutní hodnotu celého čísla, které je mu předáno.
9 dvojitá podlaha (dvojitá);Najde celé číslo, které je menší nebo rovno argumentu, který je mu předán.
10 double fabs(double);Vrací absolutní hodnotu libovolného desetinného čísla, které mu bylo předáno.

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

Pole C++

Pole v C++ je sbírka položek uložených na souvislých paměťových místech a k prvkům lze přistupovat náhodně pomocí indexů pole. Používají se k ukládání podobných prvků, protože datový typ musí být pro všechny prvky stejný. Mohou ukládat primitivní datové typy, jako je char, int, float, double, atd. Chcete-li to přidat, pole v C++ může ukládat odvozené datové typy, jako jsou struktury, ukazatele atd. Níže je uvedena malebná reprezentace pole .

Prohlášení pole

SYNTAX

|_+_|

PŘÍKLAD

|_+_|

Tady,

  • int – typ prvku, který má být uložen
  • y – název pole
  • 4 – velikost pole

Přístup k prvkům v poli

Každý prvek v poli je spojen s číslem. Číslo se nazývá index pole. K prvkům pole můžete přistupovat pomocí indexů.

SYNTAX

|_+_|

PŘÍKLAD

|_+_|

Zde je několik důležitých konceptů polí C++

    Vícerozměrná pole: Dvourozměrné pole je nejjednodušší formou vícerozměrného pole.Ukazatel na pole: Vygenerujete ukazatel na první prvek pole uvedením názvu pole bez indexu.Předávání polí funkcím: Předáte funkci ukazatel na pole zadáním názvu pole bez indexu.Návrat pole z funkcí: C++ umožňuje funkci vrátit pole.

Řetězce C++

Je to sbírka postav. V programovacím jazyce C++ se používají dva typy řetězců:

  • Řetězce, které jsou objekty třídy string
  • C-struny

Třída strun

Knihovna C++ poskytuje a tětiva třídy, která podporuje všechny výše uvedené operace, navíc mnohem více funkcí.

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

C struny

Tento řetězec pochází z jazyka C a je podporován v C++. Tento řetězec je jednorozměrné pole znaků, které je ukončeno znakem null ‚‘. Řetězec zakončený nulou tedy obsahuje znaky, které tvoří řetězec, za nimiž následuje nula.

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

Málo funkcí, které manipulují s řetězci ukončenými nulou

    strcpy(s1, s2);

Zkopíruje řetězec s2 do řetězce s1.

    strcat(s1, s2);

Zřetězí řetězec s2 na konec řetězce s1.

    strstr(s1, s2);

Vrací ukazatel na výskyt řetězce s2 v řetězci s1.

    strlen(s1);

Vrací délku řetězce s1.

    strcmp(s1, s2);

Vrací 0, pokud jsou s1 a s2 stejné; méně než 0, pokud s1s2.

    strchr(s1, ch);

Vrací ukazatel na výskyt znaku ch v řetězci s1.

C++ ukazatele

Ukazatele jsou reprezentace adres. Umožňují programům simulovat volání po referenci a vytvářet a manipulovat s dynamickými datovými strukturami.

SYNTAX

|_+_|

Jak používat ukazatel?

  • Nejprve definujte proměnnou ukazatele
  • Nyní přiřaďte adresu proměnné ukazateli pomocí (&), který vrátí adresu této proměnné.
  • Přístup k hodnotám uloženým v adrese pomocí (*), která vrací hodnotu proměnné umístěné na adrese určené jejím operandem.

Několik konceptů ukazatelů

    Nulové ukazatele: Je to konstanta s nulovou hodnotou definovanou v různých standardních knihovnách.Aritmetika ukazatele: U ukazatelů lze použít čtyři aritmetické operátory: ++, –, +, –Ukazatele vs pole: Mezi ukazateli a poli existuje úzké spojení.Pole ukazatelů: Můžete definovat pole pro uložení několika ukazatelů.Ukazatel na ukazatel: C++ vám nabízí mít ukazatel na ukazateli a tak dále.Předávání ukazatelů na funkce: Předání odkazem nebo adresou umožňuje změnu daného příkazu ve volající funkci volanou funkcí.Návrat ukazatele z funkcí: C++ nabízí funkci pro vrácení ukazatele na lokální proměnnou, statickou proměnnou a také dynamicky alokovanou paměť.

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

C++ reference

Referenční proměnná je název již existující proměnné. Jakmile je odkaz inicializován, může být k odkazování na proměnnou použit buď název proměnné, nebo název odkazu.

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

C++ Datum a čas

Knihovna C++ neposkytuje správný typ data. Dědí struktury a funkce pro manipulaci s datem a časem z jazyka C. Chcete-li získat přístup k funkcím a strukturám souvisejícím s datem a časem, musíte do svého programu C++ zahrnout soubor záhlaví.

Existují čtyři typy související s časem: clock_t, time_t, size_t a tm. Typy – clock_t, size_t a time_t jsou schopny reprezentovat systémový čas a datum jako nějaké celé číslo.

PŘÍKLAD

|_+_|

Některé důležité funkce

    čas_t čas(čas_t *čas);

Vrací aktuální kalendářní čas za několik sekund uplynulých od 1. ledna 1970. Pokud systém nemá čas, vrátí se 0,1.

    char *ctime(const time_t *time);

Vrátí ukazatel na řetězec formuláře den měsíc rok hodiny:minuty: sekundy.

    struct tm *localtime(const time_t *time);

Vrací ukazatel na tm struktura představující místní čas.

    clock_t clock(void);

Vrací hodnotu, která přibližuje dobu, po kterou byl volající program spuštěn. Pokud čas není k dispozici, vrátí se hodnota 0,1.

    char * asctime ( const struct tm * time );

Vrací ukazatel na řetězec, který obsahuje informace uložené ve struktuře označené časem převedené do tvaru: den měsíc datum hodiny:minuty: sekundy

    struct tm *gmtime(const time_t *time);

Vrací ukazatel na čas ve formě struktury tm.

    time_t mktime(struct tm *time);

Vrátí kalendářní čas nalezený ve struktuře, na kterou ukazuje čas.

    double difftime ( time_t time2, time_t time1 );

Vypočítá rozdíl v sekundách mezi time1 a time2.

    size_t strftime();

Lze jej použít k formátování data a času ve specifickém formátu.

C++ datové struktury

Pole C++ vám nabízejí definování proměnných, které kombinují několik datových položek stejného druhu. Přesto, struktura je další uživatelsky definovaný datový typ, který vám umožní kombinovat datové položky různých druhů. K reprezentaci záznamu se používají struktury.

Definování struktury

Chcete-li definovat strukturu, měli byste použít příkaz struct. Příkaz struct definuje datový typ s více než jedním členem pro program.

|_+_|

The struktura tag je volitelný. Na konci definice, před posledním středníkem, byste měli zadat jednu nebo více strukturních proměnných.

Přístup ke členům struktury

Pro přístup ke kterémukoli členu struktury můžete použít operátor přístupu pro členy (.) . Operátor přístupu člena je zakódován jako období mezi názvem proměnné struktury a členem struktury, ke kterému chceme přistupovat. Využili byste struktura klíčové slovo pro definování proměnných typu struktury.

Struktury jako funkční argumenty

Strukturu můžete předat jako argument funkce stejným způsobem, jako předáváte jakoukoli jinou proměnnou nebo ukazatel.

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

C++ třídy a objekty

Vše v C++ souvisí s třídami a objekty spolu s jejich atributy a metodami. Například: v reálném životě je autobus objekt . Autobus má atributy , jako je hmotnost a barva a metody , jako je pohon a brzda.

Atributy a metody jsou proměnné a funkcí které patří do třídy. Jsou známé jako členové třídy. Třída je uživatelsky definovaný datový typ, který můžete použít v programu, a funguje jako konstruktor objektů nebo plán pro vytváření objektů.

Vytvořte třídu

Pokud chcete vytvořit třídu, musíte použít třída klíčové slovo:

PŘÍKLAD

|_+_|

Vytvořte objekt

V C++ je objekt vytvořen z třídy.

Chcete-li vytvořit objekt, musíte zadat název třídy následovaný názvem objektu. Chcete-li získat přístup k atributům třídy, použijte syntaxi tečky (.) na objektu:

PŘÍKLAD

|_+_|

Několik pojmů v detailu

    Funkce členů třídy: Členská funkce je funkce, která má svůj prototyp v definici třídy stejně jako jakákoli jiná proměnná.Modifikátory přístupu třídy: Člen třídy může být definován jako soukromý, veřejný, chráněný. Ve výchozím nastavení je soukromý.Stavitel: Konstruktor je funkce ve třídě, která se volá při vytvoření nového objektu.ničitel: Destruktor je funkce, která se volá, když je vytvořený objekt smazán.Kopírovat konstruktor:Je to konstruktor, který vytváří objekt jeho inicializací s objektem stejné třídy, který byl vytvořen dříve.Funkce přátel: Poskytuje plný přístup k soukromým a chráněným členům třídy.Inline funkce: Kompilátor rozšíří kód v těle funkce místo volání funkce.tento ukazatel: Každý objekt má speciální ukazatel tento který ukazuje na samotný objekt.Statické členy třídy: Datové členy i funkční členy třídy lze deklarovat jako statické.

Dědičnost C++

Dědičnost je proces, ve kterém objekt získává všechny vlastnosti a chování svého nadřazeného objektu automaticky. Můžete upravit atributy a akce, které jsou definovány v jiných třídách.

Třída, která dědí členy jiné třídy, je známá jako odvozená třída a třída, jejíž členové jsou zděděni, je známá jako základní třída. Odvozená třída je specializovanou třídou pro základní třídu.

Typy dědičnosti

    Jediné dědictvíje typ dědičnosti, ve kterém je odvozená třída zděděna pouze z jedné základní třídy.

„A“ je základní třída,

„B“ je odvozená třída.

cplusplus
    Víceúrovňová dědičnostje proces odvození třídy z jiné odvozené třídy. Třída C dědí vlastnosti třídy B a třída B dědí vlastnosti třídy B. A je rodičovská třída B a třída B je rodičovská třída C.
img 617dd1cc84e68
    Vícenásobná dědičnostOdvozená třída je vytvořena z jedné základní třídy nebo více. Třída C dědí vlastnosti a chování třídy B a třídy A. Zde jsou tedy třída A a třída B rodičovskými třídami třídy C.
img 617dd1ccd67cc
  • v vícecestné dědictví, odvozená třída je vytvořena z jiné odvozené třídy a stejné základní třídy jiné odvozené třídy. Tato dědičnost není podporována . SÍŤ Jazyky jako C#, F# atd.

Třída D dědí vlastnosti a chování třídy C a třídy B a také třídy A. Třída C a třída B dědí třídu A. Třída A je rodičem třídy B a třídy C a třídy D.

img 617dd1cd9230a
    Hybridní dědičnostje kombinací více než jednoho dědictví. Může se tedy jednat o kombinaci víceúrovňové dědičnosti a víceúrovňové dědičnosti a víceúrovňové dědičnosti a víceúrovňové dědičnosti Víceúrovňové a vícenásobné dědičnosti.
img 617dd1cdf0c4e

Modifikátory přístupu C++

Modifikátory přístupu se používají k implementaci základního aspektu objektově orientovaného programování známého jako skrývání dat. Modifikátory přístupu ve třídě se používají k přiřazení přístupu členům třídy. Nastavuje určitá omezení pro členy třídy, aby nebyli přímo přístupní externím funkcím.

V C++ jsou k dispozici tři typy modifikátorů přístupu:

  • Veřejnost
  • soukromé
  • Chráněný

Pojďme si je podrobně probrat:

Veřejnost

Všichni členové třídy, kteří jsou deklarováni pod veřejným specifikátorem, jsou k dispozici všem. K členským funkcím deklarovaným jako veřejné mohou přistupovat i jiné třídy a funkce. K veřejným členům třídy lze přistupovat odkudkoli v programu pomocí operátoru přístupu (.) s objektem této třídy.

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

soukromé

Členské funkce uvnitř třídy mají přístup pouze k členům třídy, které jsou deklarovány jako soukromé. Žádný objekt nebo funkce mimo třídu k nim nemůže přistupovat přímo. Přístup k soukromým údajům členů třídy mají pouze funkce přátel.

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

Chráněný

Modifikátor chráněného přístupu je stejný jako modifikátor soukromého přístupu, protože k němu nelze přistupovat mimo jeho třídu, pokud s pomocí třídy přátel není rozdíl v tom, že k členům třídy, které jsou deklarovány jako chráněné, může přistupovat jakákoli odvozená třída. také té třídy.

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

Přetížení C++

Programovací jazyk C++ vám umožňuje zadat více než jednu definici pro a funkce jméno nebo an operátor ve stejném rozsahu, tzv přetížení funkcí a přetížení operátora , resp.

Přetížená deklarace je deklarována se stejným názvem jako dříve deklarovaná deklarace ve stejném rozsahu, kromě toho, že obě deklarace mají různé argumenty a různé definice.

Přetížení funkcí

Přetěžování funkcí je funkce, která vám nabízí více než jednu funkci se stejným názvem, ale s jiným seznamem parametrů.

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

Polymorfismus C++

Přetížení operátora

Můžete nechat operátory pracovat pro uživatelem definované třídy. To znamená, že C++ může operátorům poskytnout speciální význam pro datový typ. Toto je známé jako přetížení operátora.

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

Je to důležitý koncept objektově orientovaného programování. Znamená to více než jednu formu. To znamená, že stejná entita se v různých scénářích chová odlišně.

Přepsání funkcí

Stejnou funkci můžete mít v základní třídě i v odvozených třídách. Když funkci zavoláte pomocí objektu odvozené třídy, funkce odvozené třídy se provede spíše než základní třída.

V závislosti na objektu, který funkci volá, se proto provádějí různé funkce. Tomu se říká přepis funkce

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

Virtuální funkce C++

V C++ možná nebudete moci přepsat funkce, pokud použijeme ukazatel základní třídy k ukázání na objekt odvozené třídy.

Použití virtuálních funkcí v základní třídě zajišťuje, že funkci lze v těchto případech přepsat. Virtuální funkce tedy spadají pod přepisování funkcí.

Čistě virtuální funkce

Je možné, že chcete zahrnout virtuální funkci do základní třídy, aby mohla být předefinována v odvozené třídě tak, aby vyhovovala objektům této třídy, ale že neexistuje žádná smysluplná definice, kterou byste mohli dát pro funkci v základní třídě. .

PŘÍKLAD

|_+_|

C++ abstrakce dat

Abstrakce dat je jednou ze základních vlastností objektově orientovaného programování v C++. Abstrakce znamená zobrazení pouze relevantních informací a skrytí detailů. Abstrakce dat se týká poskytování pouze nezbytných informací o datech vnějšího světa, skrývání podrobností o pozadí nebo implementace.

Abstrakce pomocí tříd

Abstrakce můžete implementovat v C++ pomocí tříd. Třída vám pomáhá seskupit datové členy a členské funkce pomocí dostupných specifikátorů přístupu. Třída může rozhodnout, který datový člen bude viditelný pro vnější svět a který ne.

Abstrakce pomocí specifikátorů přístupu

Specifikátory přístupu hrají zásadní roli při implementaci abstrakce v C++. Specifikátory přístupu můžete použít k vynucení omezení na členy třídy. Například:

  • Členové deklarovaní jako veřejní ve třídě mohou být přístupní odkudkoli v programu.
  • Členové deklarovaní jako soukromí ve třídě jsou přístupní pouze v rámci třídy. Není dovoleno k nim přistupovat z jakékoli části kódu mimo třídu.

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

C++ zapouzdření dat

Je to proces kombinování funkcí a datových členů do jediné jednotky zvané class. To má zabránit přímému přístupu k datům. Přístup k nim je zajištěn prostřednictvím funkcí třídy. Je to jedna z oblíbených funkcí objektově orientovaného programování, která pomáhá při skrývání dat.

K realizaci tohoto

  • Nastavit všechny datové členy jako soukromé.
  • Vytvořte veřejné funkce setter a getter pro každý datový člen takovým způsobem, že funkce set nastaví hodnotu datového členu a funkce get získá hodnotu datového členu.

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

Abstraktní třídy C++

Třída C++ je abstraktní deklarací jedné z jejích funkcí jako životně důležité > čistě virtuální funkce. Čistá virtuální funkce je zmíněna umístěním = 0 ve své deklaraci. Odvozené třídy musí zajistit jejich implementaci.

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

Soubory a proudy C++

Ano ne Datový typ Popis
jeden ofstream Představuje tok výstupních souborů a používá se k vytváření souborů a zápisu informací do souborů.
dva ifstream Představuje tok vstupních souborů a používá se ke čtení informací ze souborů.
3 fstream Představuje tok souborů obecně a má schopnost jak ofstream, tak ifstream.

Otevření souboru

Soubor by měl být otevřen, než jej budete moci číst nebo do něj zapisovat. K otevření souboru pro zápis lze použít objekt fstream nebo ofstream. Objekt ifstream se používá k otevření souboru pouze pro účely čtení.

Ano ne Příznak režimu Popis
jeden ios::ate Veškerý výstup do souboru, který má být připojen na konec.
dva ios::app Otevře soubor pro výstup a přesune ovládací prvek čtení nebo zápisu na konec souboru.
3 ios::trunc Pokud soubor již existuje, bude obsah před otevřením souboru zkrácen.
4 ios::out Otevře soubor pro zápis.
5 ios::in Otevře soubor ke čtení.

SYNTAX

|_+_|

Zavření souboru

Když je program C++ ukončen, automaticky vyprázdní všechny proudy, uvolní veškerou přidělenou paměť a zavře všechny soubory, které jsou otevřeny.

SYNTAX

|_+_|

Čtení ze souboru

Informace ze souboru můžete do svého programu načíst pomocí operátoru extrakce proudu (>>). Jediný rozdíl je v tom, že místo objektu cin použijete objekt fstream nebo ifstream.

PŘEČTĚTE A NAPIŠTE PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

Ukazatele polohy souboru

Ostream i istream poskytují členské funkce pro přemístění ukazatele pozice souboru. Tyto členské funkce jsou seekp pro ostream a seekg pro istream. Argument hledat a hledat je dlouhé celé číslo. Druhý argument lze uvést pro označení směru hledání.

Zpracování výjimek C++

Zpracování výjimek v C++ je proces pro zpracování chyb za běhu. Provádíte zpracování výjimek, takže normální tok aplikace může být zachován i po chybách za běhu.

V C++ je výjimkou událost nebo objekt, který je vyvolán za běhu. Všechny výjimky jsou odvozeny od třídy std::exception. Pokud výjimku nezpracujeme, vypíše zprávu o výjimce a ukončí program.

Výjimky Popisy
std::bad_exception Používá se ke zpracování neočekávaných výjimek.
std::logic_failure Lze to zjistit přečtením kódu.
std::bad_typeid Obvykle se hází podle typového čísla.
std::runtime_error Nelze jej zjistit přečtením kódu.
std::výjimka Je to výjimka a rodičovská třída všech standardních výjimek C++.
std::bad_cast Obvykle je vyvolán dynamic_cast.
std::bad_alloc To je obecně být hozen novým.

Zpracování výjimek C++ je založeno na třech klíčových slovech: Zkus chytit, a házet .

    Snaž se− try block identifikuje blok kódu, pro který bude aktivována konkrétní výjimka. Za ním následuje jeden nebo více úlovkových bloků.chytit− Program zachytí výjimku prostřednictvím obsluhy výjimky. Klíčové slovo catch ukazuje zachycení výjimky.házet− Program vyvolá výjimku, když se objeví problém. To se provádí pomocí klíčového slova throw.

PŘÍKLAD

|_+_|

Dynamická paměť C++

Paměť je rozdělena na dvě části −

    Zásobník− Všechny proměnné deklarované uvnitř funkce zabírají paměť ze zásobníku.Hromada− Toto je nevyužitá paměť programu a používá se k dynamickému přidělování paměti při běhu programu.

Programátoři mohou dynamicky přidělovat úložný prostor, když je program spuštěn. Programátoři přesto nemohou vytvářet nové názvy proměnných, a proto dynamická alokace vyžaduje dvě kritéria:

  • Vytvoření dynamického prostoru v paměti
  • Uložení jeho adresy do ukazatele

Součástí tohoto konceptu je i dealokace paměti, kde se provádí vyčištění prostoru pro další úložiště dat. Pro zrušení přidělení dynamické paměti můžete použít operátor delete. Dynamická alokace paměti tedy znamená provádění správy paměti pro dynamickou alokaci paměti ručně.

nové a smazané operátory

Zde může být datovým typem jakýkoli vestavěný datový typ, který obsahuje pole, nebo uživatelem definované datové typy mají třídu nebo strukturu. Začněme s vestavěnými datovými typy

SYNTAX

|_+_|

Když máte pocit, že proměnná není dynamicky alokována a již není potřeba, můžete uvolnit paměť ve volném úložišti pomocí 'vymazat' operátor.

SYNTAX

|_+_|

PŘÍKLAD

|_+_|

Dynamická alokace paměti polí

Pokud jste programátor; chcete alokovat paměť pro pole znaků pomocí stejné syntaxe, jakou můžete udělat.

PŘÍKLAD

|_+_|

Jmenné prostory vám nabízejí seskupení pojmenovaných entit, které mají globální působnost do užších rozsahů, čímž jim rozsah jmenného prostoru . To také umožňuje organizovat prvky programů do různých logických oborů, na něž se odkazují názvy. Jmenný prostor je funkce přítomná v C++ a nepřítomná v C. Je povoleno více bloků jmenného prostoru se stejným názvem. Všechny deklarace v blocích jsou deklarovány v pojmenovaném rozsahu.

SYNTAX

|_+_|

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

Nesouvislé jmenné prostory

Jmenný prostor je definován v několika částech a jmenný prostor je tvořen součtem jeho definovaných částí. Jednotlivé části jmenného prostoru jsou rozmístěny ve více souborech.

SYNTAX

|_+_|

Vnořené jmenné prostory

Zde můžete definovat jeden jmenný prostor uvnitř jiného jmenného prostoru

SYNTAX

|_+_|

PŘÍKLAD

|_+_|

C++ šablony

Šablona je funkce jazyka C++, která vám nabízí psaní generických programů. Jinými slovy, můžete vytvořit jednu funkci nebo třídu pro práci s různými datovými typy pomocí šablon. Šablony se používají ve větší kódové základně pro flexibilitu kódu a opětovnou použitelnost programů.

Tyto pojmy se používají dvěma způsoby:

  • Šablony funkcí
  • Šablony tříd

Funkční šablony

Šablona funkce funguje stejně jako normální funkce s jedním klíčovým rozdílem.

Jedna šablona funkce může pracovat s různými datovými typy, ale jedna normální funkce může pracovat s jednou sadou datových typů.

Obvykle, pokud chcete provádět identické operace s více typy dat, můžete použít přetížení funkcí k vytvoření funkcí s deklarací funkce.

I když lepším přístupem by bylo použití šablon funkcí, protože můžete provádět stejnou úlohu psaním méně a udržovatelného kódu.

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

Šablony tříd

Stejně jako šablony funkcí můžete vytvářet šablony tříd pro operace tříd. Obvykle byste museli vytvořit jinou třídu pro každý datový typ NEBO vytvořit jiné členské proměnné a funkce v rámci jedné třídy.

Zbytečně to nafoukne vaši kódovou základnu a bude těžké to udržovat, protože změna v jedné třídě/funkci musí být provedena na všech třídách/funkcích. Ačkoli šablony tříd usnadňují opětovné použití stejného kódu pro všechny typy dat.

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

C++ preprocesory

Direktivy preprocesoru jsou řádky zahrnuté v kódu programů, před kterými je znak hash (#). Tyto řádky nejsou naprogramované příkazy, ale direktivy pro preprocesor. Preprocesor prozkoumá kód před zahájením kompilace kódu a vyřeší všechny direktivy předtím, než běžné příkazy vygenerují jakýkoli kód.

Direktivy preprocesoru se rozprostírají přes jeden řádek kódu. Jakmile je nalezen znak nového řádku, direktiva preprocesoru je ukončena.

Existují 4 hlavní typy direktiv preprocesoru:

  • makro
  • Začlenění souboru
  • Podmíněná kompilace
  • Další směrnice

makro

Makra jsou část kódu, která má nějaké jméno. Kdykoli kompilátor narazí na tento název, nahradí jej skutečným kusem kódu. Direktiva „#define“ se používá k definování makra.

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

Předdefinovaná makra C++

    __ČÁRA__

Obsahuje číslo řádku programu při kompilaci programu.

    __SOUBOR__

Obsahuje aktuální název souboru programu při jeho kompilaci.

    __DATUM__

Obsahuje řetězec, který je datem překladu zdrojového souboru do objektového kódu.

    __ČAS__

Obsahuje řetězec hodina:minuta:sekunda, což je čas, kdy byl program zkompilován.

Zařazení souboru

Tato direktiva preprocesoru říká kompilátoru, aby zahrnul soubor do programu. Existují dva typy souborů, které jsou uchovávány uživatelem v programu:

    Soubor záhlaví nebo standardní soubory: Tyto soubory obsahují definici předdefinovaných funkcí, jako je printf(), scanf() atd. Tyto soubory by měly být zahrnuty pro práci s těmito funkcemi. Odlišná funkce je deklarována v samostatných hlavičkových souborech.Uživatelsky definované soubory: Když se program stane ohromným, je dobrým zvykem ho rozdělit na menší soubory a zahrnout, kdykoli je to potřeba. Tyto typy souborů jsou soubory definované uživatelem.

Podmíněná kompilace

Pomáhá zkompilovat určitou část programu nebo přeskočit kompilaci některé konkrétní části programu na základě určitých podmínek.

SYNTAX

|_+_|

Další směrnice

Kromě výše uvedených směrnic jsou zde ještě dvě směrnice, které se běžně nepoužívají. Tyto jsou:

    #undef směrnice: Direktiva #undef se používá k zrušení definice existujícího makra.Směrnice #pragma: Je to direktiva pro zvláštní účel a používá se k zapnutí nebo vypnutí některých funkcí.

C++ Zpracování signálů

Signály jsou přerušení, která operační systém poskytuje procesu, který předčasně ukončí program. Stisknutím kláves Ctrl+C v systému UNIX LINUX , Mac OS X nebo Windows, můžete vytvářet přerušení.

Existují signály, které software nedokáže detekovat, ale existuje seznam signálů, které můžete ve svém programu zachytit a podniknout přijatelné akce založené na signálech. C++ hlavičkový soubor popisuje tyto signály.

Ano ne Signál Popis
jeden SIGFPE Chybná aritmetická operace, jako je přerušení nuly nebo operace přetečení.
dva SIGABRT Abnormální ukončení programu, například výzva k přerušení.
3 SIGINT Příjem signálu interaktivního zaměření
4 TĚSNĚNÍ Odhalení nelegitimního pokynu.
5 SIGTERM Odeslal žádost o ukončení programu.
6 SIGSEGV Neplatný přístup k disku.

Funkce signal().

Knihovna zpracování signálů C++ obsahuje funkci signálu pro zachycení nepředvídatelných událostí.

SYNTAX

|_+_|

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

Funkce raise().

Pomocí funkce raise(), která bere jako argument celé číslo signálu, můžete vytvářet signály.

SYNTAX

|_+_|

PŘÍKLAD

|_+_|

VÝSTUP

|_+_|

Multithreading je specializovaný typ multitaskingu a funkce, která umožňuje vašemu stroji spouštět dva nebo více programů současně, je funkce multitaskingu. Obecně existují dva typy multitaskingu: procesní a vláknový. Paralelní provádění programů je řešeno procesem založeným multitaskingem. Multitasking založený na vláknech se zabývá paralelním prováděním částí stejného programu. Existují dvě nebo tři součásti vícevláknového programu, které poběží současně.

SYNTAX

|_+_|
ANO NE Parametr Popis
jeden rozzlobený Jediný příkaz, který lze přeposlat ke spuštění rutiny. Musí být přenesen jako přetypovaný ukazatel typu void porovnáním. Hodnotu NULL lze použít, když není k dispozici žádný argument k přesunutí.
dva vlákno Neprůhledný, speciální identifikátor pro aktuální vlákno, který podprogram vrací.
3 attr Atribut neviditelného objektu, který lze použít pro nastavení atributů vlákna. Můžete definovat objekt s vlastnostmi vlákna nebo NULL s výchozími hodnotami.
4 start_rutina Rutina C++, která se po vytvoření vlákna spustí.

Ukončování vláken

K ukončení vlákna POSIX používáme následující rutinu:

|_+_|

Zde se pthread exit používá k přímému ukončení vlákna. Obvykle, jakmile vlákno dokončí svou úlohu a již není potřeba, aby fungovalo, je pojmenována rutina pthread exit().

Pokud se main() ukončí a ukončí pomocí pthread exit() před vlákny, které vytváří, ostatní vlákna mohou začít běžet. Jinak jak main() končí, jsou okamžitě ukončeny

Zadávání a odpojování nití

Následují dvě rutiny, které můžeme použít k zadávání nebo odstraňování vláken.

|_+_|

Podprogram pthread join() blokuje volající vlákno, dokud není vlákno „threadid“ ukončeno. Jeden z jeho atributů určuje, zda je při vytváření vlákna připojitelný nebo odpojený. Mohou být spojeny pouze vlákny, které jsou vygenerovány jako spojitelné. Nikdy jej nelze spojit, pokud je závit vytvořen jako oddělený.

Webové programování v C++

A co je CGI?

Soubor pokynů, které popisují, jak jsou informace sdíleny mezi webovým serverem a vlastním skriptem, je typické rozhraní brány nebo CGI. Pro systémy externích bran je standardem pro propojení s informačními servery, jako jsou servery HTTP, rozhraní Generic Gateway Interface neboli CGI. CGI/1.1 je nejnovější verze a CGI/1.2 je ve vývoji.

Procházení internetu

Podívejme se, co se stane, když stiskneme hypertextový odkaz pro procházení určité webové stránky nebo adresy URL, abychom pochopili koncept CGI. Webový server HTTP je kontaktován vaším prohlížečem a požaduje URL, tj. název souboru podle názvu souboru. Webový server analyzuje adresu URL a hledá název souboru. Pokud je požadovaný soubor nalezen, webový server přenese soubor zpět do prohlížeče, jinak odešle chybovou zprávu, že jste požádali o neplatný soubor.

Popular Gateway Interface (CGI) je základní protokol, který umožňuje aplikacím komunikovat s webovými servery a klienty. Tyto CGI programy je možné psát v Pythonu, PERL, Shell, C nebo C++ atd.

PŘÍKLAD

|_+_|

Konfigurace webového serveru

Před pokračováním v programování CGI se ujistěte, že webový server přijímá CGI a že je navržen tak, aby vyhovoval CGI programům. Mnoho programů CGI, které server HTTP spouští, je umístěno v předem nakonfigurovaném adresáři. Tento adresář se nazývá adresář CGI a podle konvence se jmenuje /var/www/cgi-bin. Soubory CGI budou mít podle konvence přípony jako .cgi, ačkoli jsou spustitelné v C++.

HTTP hlavičky

    Sada cookie: Řetězec

Nakonfigurujte soubor cookie, který prochází řetězcem.

    Poslední změna: Datum

Datum poslední aktualizace zdroje.

    Délka obsahu: N

Délka vrácených dat v bajtech. Prohlížeč používá tuto hodnotu, aby nahlásil přibližnou dobu načítání souboru.

    Typ obsahu:

Řetězec MIME, který určuje formát řetězce

    Umístění: URL

Adresa URL, která by měla být vrácena, nikoli požadovaná adresa URL. Tento soubor bude použit k přesměrování požadavku na jiný soubor.

    Vyprší: Datum

Den, kdy se data stala nepoužitelnou. Prohlížeč by to měl použít k rozhodnutí, zda má být web obnoven.

Proměnné prostředí

    TYP OBSAHU: Druh dat obsahu, která se používají, když klient odesílá připojený obsah na server. Například pro nahrávání souborů atd.DÉLKA OBSAHU: Doba trvání informací z dotazníku, které lze získat pouze pro požadavky POST.HTTP-COOKIE: Vrátí soubory cookie nastavené v typu páru klíč & hodnota.Agent HTTP USER: Pole User-Agent záhlaví požadavku poskytuje informace o uživatelském agentovi, který požadavek inicioval. Je to název prohlížeče na internetu.INFORMACE O CESTĚ: Směr k souboru skriptu CGI.ŘETĚZEC DOTAZU: Informace zakódované v URL, které jsou odeslány s požadavkem z procesu GET.VZDÁLENÁ ADDR: IP adresa vzdáleného hostitele, která umožňuje odvolání. To může být užitečné pro protokolování nebo pro účely ověřování.VZDÁLENÝ HOST: Plně kvalifikovaný název hledajícího hostitele. Pokud tyto informace nejsou k dispozici, je možné pro získání IR adresy použít REMOTE ADDR.ZPŮSOB ŽÁDÁNÍ: Metodika použitá pro předložení příspěvku. GET a POST jsou nejoblíbenější přístupy.NÁZEV SOUBORU SCRIPT: Kompletní cesta ke skriptu CGISERVER_NAME: Název domény nebo IP adresa serveru.SERVER_SOFTWARE: Název programu a verze, kterou server běží.

Metody GET a POST

Když se pokoušíte přenést jakékoli podrobnosti z vašeho prohlížeče na webový server a případně do vaší CGI aplikace, musíte narazit na určité scénáře. Pro přenos těchto informací na webový server prohlížeč nejčastěji používá dva přístupy. Těmito přístupy jsou metoda GET a metoda POST.

PŘÍKLAD URL metoda GET

|_+_|

Používání cookies

Protokol HTTP je protokol, který je bezstavový. Pro komerční web je však důležité uchovávat data o relacích mezi různými weby. Například registrace jednoho uživatele skončí po dokončení několika stránek. Ale jak uchovávat detaily relace pro uživatele na všech webových stránkách. Nejspolehlivějším způsobem, jak si zapamatovat a sledovat zájmy, prodeje, provize a další podrobnosti potřebné pro lepší návštěvnost nebo statistiky stránek, je v určitých případech používat soubory cookie.

Ve formě cookie váš server přenese některá data do okna návštěvníka. Soubor cookie bude schválen prohlížečem. Pokud ano, uloží se na pevný disk návštěvníka jako prostý textový archiv. Nyní je soubor cookie připraven k obnovení, když uživatel navštíví jinou stránku na vašem webu. Po obnovení je to, co bylo uloženo, známo/zapamatuje si server.

    Platnost vyprší-To znamená datum vypršení platnosti souboru cookie. Pokud je toto prázdné, jakmile návštěvník opustí prohlížeč, platnost souboru cookie vyprší.Doména− Toto zobrazí název domény webu.Cesta− Označuje cestu k adresáři nebo webové stránce pro nastavení souborů cookie. Pokud se pokusíte získat cookie z nějakého adresáře nebo karty, může být null.Zajistit− Pokud toto pole obsahuje slovo secure, pak může soubor cookie obnovit pouze zabezpečený server. Pokud je toto pole prázdné, neplatí žádné další omezení.Jméno = hodnota− Ve formě párů klíčů a hodnot se nastavují a načítají soubory cookie.

Příklad nahrání souboru

|_+_|

Závěr

Tím se dostáváme na konec tohoto tutoriálu C++. Doufám, že vám to pomohlo pochopit základy programování v C++.