C++ – nezbytný a oblíbený programovací jazyk kodérů. Je stále aktuální, jako tomu bylo v polovině 80. let. Jako univerzální a objektově orientovaný programovací jazyk je široce používán většinou při každém kódování. V důsledku toho některé pracovní role vyžadují, aby jednotlivci ovládali jazyk C++. Využívají jej špičkové IT společnosti jako např Evernote, LinkedIn, Microsoft, Opera, NASA , a Meta díky své spolehlivosti, výkonu a široké škále nastavení, ve kterých může být použit. Takže, abyste se dostali do těchto společností, musíte v nich být důkladní 50 nejlepších otázek na pohovor v C++ díky čemuž můžete před personalisty vypadat jako expert.

Abyste byli připraveni na rozhovor, přinesli jsme 50 nejlepších otázek k pohovoru v C++ začátečník, středně pokročilý a zkušený kterou musíte rozhodně projít, abyste se umístili mezi nejlepšími nadnárodními společnostmi.
Otázky k pohovoru v C++ pro začátečníky
1. Co je C++? Jaké jsou výhody C++?
C++ je objektově orientovaný programovací jazyk, který byl zaveden, aby překonal jurisdikce, kde C chybělo. Objektově orientovaným rozumíme, že pracuje s konceptem polymorfismus , dědictví , abstrakce , zapouzdření , objekt a třída .
Výhody C++ :
- C++ je jazyk OOPs, což znamená, že data jsou považována za objekty.
- C++ je multiparadigmatický jazyk; Zjednodušeně to znamená, že můžeme naprogramovat logiku, strukturu a proceduru programu.
- Správa paměti je klíčovou funkcí v C++, protože umožňuje dynamické přidělování paměti
- Je to programovací jazyk střední úrovně, což znamená, že může vyvíjet hry, desktopové aplikace, ovladače a jádra
Více informací naleznete v článku – Jaké jsou výhody C++?
2. Jaké jsou různé datové typy přítomné v C++?

Různé typy datových typů v C++
Další informace viz ' std' je také známý jako standardní nebo jej lze interpretovat jako jmenný prostor. Příkaz pomocí jmenného prostoru std informuje kompilátor, aby přidal vše pod std jmenný prostor a vštípit je do globální jmenný prostor . Toto veškeré vštěpování globálního jmenného prostoru nám přináší výhody cout a jíst bez použití std::_operator_.
Další informace viz jmenný prostor a std .
4. Co jsou odkazy v C++?
Když je proměnná popsána jako reference, stává se aliasem již existující proměnné. Jednoduše řečeno, odkazovaná proměnná je další pojmenovaná proměnná existující proměnné, přičemž je třeba mít na paměti, že změny provedené v referenční proměnné se projeví v již existující proměnné. Referenční proměnné předchází a '&' symbol.
Syntax:
int GFG = 10; // reference variable int& ref = GFG;>
Další informace viz odkazy v C++
5. Co rozumíte pod pojmem Call by Value a Call by Reference?
V tomto programovacím jazyce pro volání funkce máme 2 metody: Volejte podle hodnoty a Volejte podle reference
Volejte podle hodnoty | Volejte podle reference |
|---|---|
| Je předána kopie proměnné. | Samotná proměnná je zásadně předána. |
| Volání funkce odesláním hodnot zkopírováním proměnných. | Volání funkce odesláním adresy předané proměnné. |
| Změny provedené ve funkci se nikdy neprojeví mimo funkci na proměnné. Stručně řečeno, původní hodnota se v Call by Value nikdy nezmění. | Změny provedené ve funkcích lze vidět mimo funkci na předané funkci. Stručně řečeno, původní hodnota je změněna v Call odkazem. |
| Předané aktuální a formální parametry jsou uloženy v různých paměťových místech. Proto volání podle hodnoty trochu paměti nestačí | Předané aktuální a formální parametry jsou uloženy na stejném paměťovém místě. Proto je Call by Reference o něco efektivnější z hlediska paměti. |
Další informace viz rozdíl mezi voláním podle hodnoty a voláním podle reference
6. Definujte token v C++
Token je nejmenší jednotlivý prvek programu, kterému rozumí kompilátor. Token obsahuje následující:
- Klíčová slova – které mají pro kompilátor zvláštní význam
- Identifikátory – které mají jedinečnou hodnotu/totožnost
- Konstanty – To nikdy nemění jejich hodnotu v průběhu programu
- Struny – Obsahuje homogenní posloupnost dat
- Speciální symboly – Mají nějaký zvláštní význam a nelze je použít k jinému účelu; např: [] () {}, ; * = #
- Operátoři – Kdo provádí operace s operandem
Další informace viz Tokeny v C++
7. Jaký je rozdíl mezi C a C++?
C | C++ |
|---|---|
| Je to procedurální programovací jazyk. Jednoduše řečeno, nepodporuje třídy a objekty | Jedná se o směs procedurálních a objektově orientovaných programovacích jazyků. Jednoduše řečeno, podporuje třídy a objekty. |
| Nepodporuje žádné koncepty OOP, jako je polymorfismus, abstrakce dat, zapouzdření, třídy a objekty. | Podporuje všechny koncepty dat |
| Nepodporuje přetížení funkcí a operátorů | Podporuje funkci a přetížení operátora |
| Je to funkčně řízený jazyk | Je to objektově řízený jazyk |
Další informace viz Rozdíl mezi C a C++
8. Jaký je rozdíl mezi strukturou a třídou?
Struktura | Třída |
|---|---|
| Členové struktury jsou vždy ve výchozím nastavení veřejný režim | Členové třídy mohou být v soukromém, chráněném a veřejném režimu. |
| Struktury jsou hodnotového typu. Uchovávají hodnotu pouze v paměti. | Třídy jsou referenčního typu. Obsahuje odkaz na objekt v paměti. |
| Paměť ve strukturách je uložena jako zásobníky | Paměť ve třídách je uložena jako hromady. |
Další informace naleznete v části Rozdíl mezi strukturou a třídou.
9. Jaký je rozdíl mezi referencí a ukazatelem?
Odkaz Java string builder | Ukazatel |
|---|---|
| Hodnotu reference nelze znovu přiřadit | Hodnotu ukazatele lze znovu přiřadit |
| Nikdy nemůže držet a nula hodnotu, protože potřebuje existující hodnotu, aby se stala aliasem | Může držet nebo ukazovat na a nula hodnotu a být označen jako a nullptr nebo nulový ukazatel |
| Nemůže pracovat s poli | Umí pracovat s poli |
| Pro přístup k členům třídy/struktury používá „ . ' | Pro přístup k členům třídy/struktury používá „ -> ' |
| K referenčnímu umístění v paměti lze snadno přistupovat nebo jej lze přímo použít | K umístění v paměti ukazatele nelze snadno přistupovat, protože musíme použít dereference ‘ * ' |
Další informace naleznete v části Rozdíl mezi referencí a ukazatelem
10. Jaký je rozdíl mezi přetížením funkcí a přetížením operátora?
Přetížení funkcí | Přetížení operátora |
|---|---|
| V podstatě jde o definování funkce mnoha způsoby, takže existuje mnoho způsobů, jak ji volat, nebo jednoduše řečeno, máte několik verzí stejné funkce | V zásadě jde o praktikování přidělování zvláštního významu existujícímu významu operátoru nebo jednoduše předefinování předem předefinovaného významu. |
| Parametrizované funkce jsou dobrým příkladem přetížení funkcí, protože pouhou změnou argumentu nebo parametru funkce je užitečná pro různé účely. | Polymorfismus je dobrým příkladem přetížení operátora, protože objekt třídy alokací může být použit a volán různými třídami pro různé účely. |
Příklad přetížení funkcí:
| Příklad přetížení operátora:
|
Další informace viz Přetížení operátora a Přetížení funkcí
11. Jaký je rozdíl mezi polem a seznamem?
Pole | Seznamy |
|---|---|
| Pole jsou souvislá paměťová místa homogenních datových typů uložená v pevném umístění nebo velikosti. | Seznamy jsou klasické jednotlivé prvky, které na sebe navazují nebo navazují pomocí ukazatelů a nemají pevnou velikost. |
| Pole jsou statické povahy. | Seznamy mají dynamický charakter |
| Využívá méně paměti než propojené seznamy. | Využívá více paměti, protože musí uložit hodnotu a umístění v paměti ukazatele |
Další informace viz Pole vs seznam
12. Jaký je rozdíl mezi smyčkou while a smyčkou do-while?
Zatímco smyčka | do-while Loop |
|---|---|
| Smyčka While se také nazývá smyčka řízená vstupem | Smyčka do-while se nazývá výstupní řídicí smyčka |
| Pokud podmínka není splněna, příkazy uvnitř smyčky se nevykonají | I když podmínka není splněna, příkazy uvnitř smyčky se provedou alespoň jednou |
Příklad smyčky while: zatímco (podmínka) {příkazy k provedení;}; | Příklad smyčky do-while: udělat { příkazy, které mají být provedeny; } while(podmínka nebo výraz); |
Další informace naleznete v části Rozdíl mezi smyčkou while a do-while
13. Diskutujte o rozdílu mezi prefixem a postfixem?
předpona | postfix |
|---|---|
| Jednoduše to znamená umístit operátora před operand | Jednoduše to znamená umístit operátora za operand |
| Předtím se spustí '; ' | Spustí se poté '; ' |
| Asociativita prefixu ++ je zprava doleva | Asociativita postfixu ++ je zleva doprava |
Další informace naleznete v části Rozdíl mezi prefixem a postfixem
14. Jaký je rozdíl mezi new a malloc()?
Nový | malloc() chyba atributu python |
|---|---|
| nový je operátor, který provádí operaci | malloc je funkce, která vrací a přijímá hodnoty |
| new volá konstruktory | malloc nemůže volat konstruktor |
| new je rychlejší než malloc, protože je operátorem | malloc je pomalejší než nový, protože jde o funkci |
| new vrátí přesný datový typ | malloc vrací neplatný* |
Další informace viz Rozdíl mezi new a malloc()
15. Jaký je rozdíl mezi virtuálními funkcemi a čistě virtuálními funkcemi?
Virtuální funkce | Čistá virtuální funkce |
|---|---|
| Virtuální funkce je členská funkce základní třídy, kterou lze předefinovat v jiné odvozené třídě. | Čistá virtuální funkce je členská funkce základní třídy, která je deklarována pouze v základní třídě a definována v odvozené třídě, aby se z ní nestala abstraktní třída. |
| Virtuální funkce má svou definici ve své příslušné základní třídě. | V Pure Virtual Function neexistuje žádná definice a je inicializována čistým specifikátorem (= 0). |
| Základní třída má virtuální funkci, která může být reprezentována nebo instance; Jednoduše řečeno, jeho předmět lze vyrobit. | Základní třída s čistě virtuální funkcí se stává abstraktní, kterou nelze reprezentovat nebo instanci; Jednoduše řečeno to znamená, že jeho předmět nelze vyrobit. |
Další informace naleznete v části Rozdíl mezi virtuálními funkcemi a čistě virtuálními funkcemi
16. Co jsou třídy a objekty v C++?
Třída je uživatelsky definovaný datový typ, kde jsou všechny členské funkce a datové členy šité na míru podle požadavků a požadavků, navíc k nim lze přistupovat pomocí objekt . K deklaraci uživatelem definovaného datového typu používáme klíčové slovo třída.
Objekt je instancí třídy a entity s hodnotou a stavem; Jednoduše řečeno, používá se jako katalyzátor nebo k reprezentaci člena třídy. Může obsahovat jiné parametry nebo žádné.
Poznámka: Třída je plán, který definuje funkce, které objekt používá.
Další informace naleznete zde Co jsou třídy a objekty
17. Co je funkce Overriding?
Když je v odvozené třídě použita funkce se stejným názvem, stejnými argumenty nebo parametry a stejným návratovým typem, který je již přítomen/deklarován v základní třídě, nazývá se to funkce Overriding. Je to příklad Runtime Polymorphism nebo Late Binding, což znamená, že přepsaná funkce bude provedena v době běhu provádění.
Další informace viz Přepisování funkcí v C++
18. Jaké jsou různé koncepty OOP v C++?
- Třídy : Je to uživatelsky definovaný datový typ
- Objekty : Je to instance třídy
- Abstrakce: Je to technika zobrazení pouze nezbytných detailů
- Zapouzdření: Zabalení dat do jedné jednotky
- Dědictví: Schopnost třídy odvozovat vlastnosti a charakteristiky z jiné třídy
- Polymorfismus: Polymorfismus je znám jako mnoho forem stejné věci
Další informace viz Různé koncepty OOP v C++
19. Vysvětlete dědičnost
Schopnost nebo schopnost třídy odvozovat vlastnosti a charakteristiky z jiné třídy se nazývá dědičnost. Jednoduše řečeno, je to systém nebo technika opětovného použití a rozšíření existujících tříd bez jejich modifikace.
Další informace viz Dědictví
20. Kdy bychom měli použít vícenásobnou dědičnost?
Vícenásobná dědičnost znamená, že odvozená třída může zdědit dvě nebo více základních/nadřazených tříd. Je to užitečné, když odvozená třída potřebuje kombinovat četné atributy/smlouvy a zdědit část nebo celou implementaci z těchto atributů/smluv. Chcete-li vzít příklad ze skutečného života, zvažte své rodiče, kde rodič A je váš TÁTA Rodič B je vaše MÁMA a dítě C jste vy.

Vícenásobná dědictví
Další informace viz Vícenásobná dědičnost .
21. Co je virtuální dědictví?
Virtuální dědičnost je technika, která zajišťuje, že třídy odvozené od vnuků zdědí pouze jednu kopii členských proměnných základní třídy. Nebo zjednodušeně řečeno, virtuální dědičnost se používá, když se zabýváme situací více dědičnosti, ale chceme zabránit tomu, aby se v hierarchii dědičnosti objevilo více instancí stejné třídy.
22. Co je to polymorfismus v C++?
Polymorfismus je znám jako mnoho forem stejné věci. Zjednodušeně lze říci, že polymorfismus je schopnost zobrazit členskou funkci ve více formách v závislosti na typu objektu, který je volá.
Jinými slovy, můžeme také říci, že muž může být pro někoho zaměstnancem, synem někoho, otcem někoho a manželem někoho; takto lze promítat polymorfismus v reálném životě.
Existují 2 typy polymorfismu:
- Polymorfismus času kompilace
- Přetížení funkcí
- Přetížení operátora
- Polymorfismus doby běhu
- Přepsání funkcí
- Virtuální funkce
Chcete-li se o tom dozvědět více, viz Polymorfismus
23. Jaké jsou různé typy polymorfismu v C++?
Existují 2 typy polymorfismu
Polymorfismus času kompilace nebo statická vazba
Tento typ polymorfismu je dosažen během kompilace programu, což má za následek, že je o něco rychlejší než Run time. Dědičnost do toho také není zapojena. Skládá se z 2 další techniky :
Přetížení funkcí: Pokud existuje více funkcí se stejným názvem, ale různými parametry, nazývá se to přetížení funkcí.
C++ // same name different arguments int GFG() {} int GFG(int a) {} float GFG(double a) {} int GFG(int a, double b) {}>
Přetížení operátora: V zásadě jde o praktikování přidělování zvláštního významu existujícímu významu operátoru nebo jednoduše předefinování předem předefinovaného významu.
class GFG { // private and other modes statements public returnType operator symbol(arguments){ statements } statements };>
Run-time polymorfismus nebo pozdní vazba
Polymorfismus za běhu nastává, když jsou funkce vyvolány během běhu.
Přepsání funkce: K přepsání funkce dochází, když je členská funkce základní třídy předefinována v odvozené třídě se stejnými argumenty a návratovým typem.
// C++ program to demonstrate // Function overriding #include using namespace std; class GFG { public: virtual void display() { cout << 'Function of base class' << endl; } }; class derived_GFG : public GFG { public: void display() { cout << 'Function of derived class' << endl; } }; int main() { derived_GFG dg; dg.display(); return 0; }> Výstup:
Function of derived class>
Další informace viz Různé typy polymorfismu
24. Porovnejte polymorfismus v době kompilace a polymorfismus v době běhu
Polymorfismus v době kompilace | Polymorfismus za běhu java architektura |
|---|---|
| Označuje se také jako statická vazba a časná vazba. | Označuje se také jako dynamická vazba a pozdní vazba. |
| Je to rychlé, protože provedení je známé již v době kompilace. | Je to pomalé ve srovnání s dobou kompilace, protože spuštění je známé za běhu. |
| Toho je dosaženo přetížením funkcí a přetížením obsluhy. | Toho je dosaženo pomocí virtuálních funkcí a přepisování funkcí. |
Další informace viz Polymorfismus v době kompilace a polymorfismus za běhu
25. Vysvětlete konstruktor v C++.
Konstruktor je speciální typ členské funkce třídy, jejíž jméno je stejné jako jméno třídy, kterou je vyvoláno, a inicializuje hodnotu objektu třídy.
Existují 3 typy konstruktorů:
A. Výchozí konstruktor: Je to nejzákladnější typ konstruktoru, který nepřijímá žádné argumenty ani parametry. I když není volán, kompilátor jej volá automaticky, když je vytvořen objekt.
Příklad:
C++ class Class_name { public: Class_name() { cout << 'I am a default constructor'; } };>
B. Parametrizovaný konstruktor: Je to typ konstruktoru, který přijímá argumenty nebo parametry. Musí být volána explicitně předáním hodnot v argumentech, protože tyto argumenty pomáhají inicializovat objekt, když je vytvořen. Má také stejný název jako třída.
Také se používá k přetížení konstruktorů.
Příklad:
C++ // CPP program to demonstrate // parameterized constructors #include using namespace std; class GFG { private: int x, y; public: // Parameterized Constructor GFG(int x1, int y1) { x = x1; y = y1; } int getX() { return x; } int getY() { return y; } }; int main() { // Constructor called GFG G(10, 15); // Access values assigned by constructor cout << 'G.x = ' << G.getX() << ', G.y = ' << G.getY(); return 0; }> Výstup
G.x = 10, G.y = 15>
C. Kopírovat konstruktor: Kopírovací konstruktor je členská funkce, která inicializuje objekt pomocí jiného objektu stejné třídy. Konstruktor Copy také bere jako argument odkaz na objekt stejné třídy.
Příklad:
C++ Sample(Sample& t) { id = t.id; }>
Další informace viz Konstruktéři
26. Co jsou destruktory v C++?
Destruktory jsou členy funkcí ve třídě, které odstraní objekt, když objekt třídy překročí rozsah. Destruktory mají stejný název jako třída, před kterým je znak vlnovky (~). Také destruktory následují a až nahoru na rozdíl od konstruktérů, kteří postupují shora dolů.
Syntax:
~constructor_name(); // tilde sign signifies that it is a destructor>
Další informace viz ničitel .
27. Co je virtuální destruktor?
Při ničení instancí nebo objektů odvozené třídy pomocí objektu ukazatele základní třídy je vyvolán virtuální destruktor, aby se uvolnil paměťový prostor přidělený objektem nebo instancí odvozené třídy.
Virtuální destruktor zaručuje, že nejprve je zavolán destruktor odvozené třídy. Poté je zavolán destruktor základní třídy, aby uvolnil místo obsazené oběma destruktory v dědičné třídě, což nás ušetří před únikem paměti. Je doporučeno, aby byl váš destruktor virtuální, kdykoli je vaše třída polymorfní.
Další informace viz Virtuální ničitel
28. Je možné přetížení destruktoru? Pokud ano, vysvětlete a pokud ne, tak proč?
Jednoduchá odpověď je NE nemůžeme přetížit destruktor. V C++ je povinné používat pouze destruktor na třídu. Také je třeba zmínit, že Destructor nebere argumenty ani nemá parametr, který by mohl pomoci k přetížení.
Otázky k pohovoru v C++ – středně pokročilá úroveň
29. Které operace jsou povoleny s ukazateli?
Ukazatele jsou proměnné, které se používají k uložení umístění adresy jiné proměnné. Operace, které jsou povoleny pro ukazatel, jsou:
- Zvýšení/snížení ukazatele
- Sčítání a odčítání celého čísla k ukazateli
- Porovnání ukazatelů stejného typu
30. Jaký je účel vymazat operátor?
Operátor delete se používá k odstranění/odstranění všech charakteristik/vlastností z objektu uvolněním jeho paměti; navíc nakonec vrátí true nebo false. Jednoduše řečeno, ničí nebo uvolňuje objekty pole a nepole (ukazatel), které jsou vytvořeny novými výrazy.
C++ int GFG = new int[100]; // uses GFG for deletion delete[] GFG;>
Další informace viz Smazat operátora
31. Jak se delete [] liší od delete?
vymazat[] | vymazat |
|---|---|
| Používá se pro smazání celého pole | Používá se k odstranění pouze jednoho jediného ukazatele |
| Používá se pro mazání objektů Nový[]; Tímto můžeme říci, že vymazat[] se používá k odstranění pole objektů | Používá se pro mazání objektů Nový; Tímto můžeme říci, že vymazat se používá k odstranění jednoho objektu |
| Může zavolat tolik destruktorů, kolik chce | Může volat destruktor třídy pouze jednou |
32. Co víte o třídě přátel a funkci přátel?
Třída přátel je třída, která má přístup k chráněným i soukromým proměnným tříd, kde je deklarována jako přítel.
Příklad třídy přátel:
C++ class Class_1st { // ClassB is a friend class of ClassA friend class Class_2nd; statements; } class Class_2nd { statements; }>
Funkce přítele je funkce používaná pro přístup k soukromým, chráněným a veřejným datovým členům nebo členským funkcím jiných tříd. Je deklarováno pomocí klíčového slova friend. Výhodou funkce přítele je, že není vázána na rozsah třídy a jakmile je deklarována ve třídě, navíc nemůže být volána objektem třídy; proto jej lze volat jinými funkcemi. Vzhledem ke všem zmíněným bodům můžeme říci, že funkce přítele je globální funkcí .
Příklad funkce přítele:
C++ class GFG { statements; friend dataype function_Name(arguments); statements; } OR class GFG { statements' friend int divide(10, 5); statements; }>
Další informace naleznete v části funkce přátel a třída přátel
33. Co je chyba přetečení?
Chyba přetečení nastane, když je číslo příliš velké, než aby jej datový typ zpracoval. Jednoduše řečeno, je to typ chyby, který je platný pro definovaný, ale překračuje použitý definovaný rozsah, kde by se měl shodovat/lehat.
Například rozsah datového typu int je –2 147 483 648 na 2,147,483,647 a pokud deklarujeme proměnnou velikosti 2,247,483,648 bude generovat chybu přetečení.
34. Co dělá operátor Scope Resolution?
Operátor rozlišení rozsahu je označen „ :: symbol ‘. Stejně jako jeho název tento operátor řeší bariéru rozsahu v programu. Operátor rozlišení rozsahu se používá k odkazování na členskou funkci nebo globální proměnnou mimo jejich rozsah, ke které může také přistupovat ke skryté proměnné nebo funkci v programu.
Rozlišení rozsahu se používá pro velké množství úkolů:
- Pro přístup ke globální proměnné, když existuje lokální proměnná se stejným názvem
- Chcete-li definovat funkci mimo třídu
- V případě vícenásobného dědictví
- Pro jmenný prostor
Další informace viz Operátor rozlišení rozsahu
35. Co jsou modifikátory přístupu C++?
Omezení přístupu určené členům třídy (ať už jde o členskou funkci nebo datový člen) je známé jako modifikátory/specifikátory přístupu.
Modifikátory přístupu jsou 3 typů:
abeceda s čísly
- Soukromé – Nelze k ní přistupovat ani ji nelze prohlížet mimo třídu
- Chráněný - Lze k němu přistupovat tehdy a pouze tehdy, je-li přístupovým objektem odvozená třída
- Veřejné – Lze k němu přistupovat nebo jej prohlížet mimo třídu
Další informace viz Modifikátory přístupu
36. Dokážete sestavit program bez hlavní funkce?
Ano, je absolutně možné zkompilovat program bez main(). Například použijte makra, která definují hlavní
C++ // C++ program to demonstrate the // a program without main() #include #define fun main int fun(void) { printf('Geeksforgeeks'); return 0; }> Další informace viz Dokážete zkompilovat program bez hlavní funkce
37. Co je STL?
STL je známá jako Standard Template Library, je to knihovna, která poskytuje 4 komponenty jako kontejner, algoritmy a iterátory.

C++ STL
Další informace viz STL v C++
38. Definujte inline funkci. Můžeme mít v C++ rekurzivní inline funkci?
Inline funkce je forma požadavku, nikoli příkaz kompilátoru, což má za následek vložení naší funkce do těla hlavní funkce. Inline funkce se může stát režií, pokud je doba provedení funkce kratší než doba přepnutí z funkce volajícího na volanou funkci. Chcete-li funkci vložit, použijte klíčové slovo v souladu před a definujte funkci před jakýmkoli voláním funkce.

Inline Vysvětlení funkce
Syntax:
inline data_type function_name() { Body; }>Odpověď je Ne; Nemůže být rekurzivní.
Inline funkce nemůže být rekurzivní, protože v případě inline funkce je kód pouze umístěn na pozici, odkud je volán, a neuchovává v zásobníku informaci, která je nezbytná pro rekurzi.
Navíc, pokud napíšete klíčové slovo inline před rekurzivní funkci, kompilátor jej bude automaticky ignorovat, protože inline je brán pouze jako návrh kompilátoru.
Další informace viz Funkce Inline
39. Co je abstraktní třída a kdy ji používáte?
Abstraktní třída je třída, která je speciálně navržena pro použití jako základní třída. Abstraktní třída obsahuje alespoň jednu čistě virtuální funkci. Čistě virtuální funkci deklarujete pomocí a čistý specifikátor(= 0) v deklaraci virtuální členské funkce v deklaraci třídy
Nemůžete použít abstraktní třídu jako typ parametru, návratový typ funkce nebo typ explicitní konverze, ani nemůžete deklarovat objekt abstraktní třídy. Lze jej však použít k deklaraci ukazatelů a odkazů na abstraktní třídu.
Abstraktní třída se používá, pokud chcete poskytnout společnou implementovanou funkčnost mezi všemi implementacemi komponenty. Abstraktní třídy vám umožní částečně implementovat vaši třídu, zatímco rozhraní by neměla žádnou implementaci pro žádné členy. Jednoduše řečeno, abstraktní třídy se hodí, pokud chcete svým dětem poskytnout podrobnosti o implementaci, ale nechcete povolit přímou instanci instance vaší třídy.
40. Co jsou statické datové členy a statické členské funkce?
Statický datový člen třídy je normální datový člen, kterému předchází statické klíčové slovo. Provádí se před main() v programu a je inicializován na 0, když je vytvořen první objekt třídy. Je viditelný pouze pro definovanou třídu, ale jeho rozsah je celoživotní.
Syntax:
static Data_Type Data_Member;>
Statická členská funkce je členská funkce, která se používá pro přístup k jiným statickým datovým členům nebo jiným statickým členským funkcím. Je také definován pomocí statického klíčového slova. Ke statické členské funkci můžeme přistupovat pomocí názvu třídy nebo objektů třídy.
Syntax:
classname::function name(parameter);>
Otázky k pohovoru C++ – expertní úroveň
41. Jaké je hlavní použití klíčového slova Volatile?
Stejně jako jeho název se věci mohou změnit náhle a neočekávaně; Používá se tedy k informování kompilátoru, že hodnota se může kdykoli změnit. Nestálé klíčové slovo také brání kompilátoru v provádění optimalizace kódu. Byl zamýšlen pro použití při propojení s hardwarem mapovaným do paměti, obslužnými programy signálů a instrukcemi strojového kódu.
np.nuly
Další informace naleznete zde Nestálý
42. Definujte třídu úložiště v C++ a některé pojmenujte
Třída úložiště se používá k definování funkcí (životnost a viditelnost) proměnné nebo funkce. Tyto funkce obvykle pomáhají při sledování existence proměnné během běhu programu.
Syntax:
storage_class var_data_type var_name;>
Některé typy tříd úložiště:

Příklady skladovací třídy
Další informace viz Třída úložiště
43. Co je specifikátor třídy proměnlivého úložiště? Jak je lze použít?
Stejně jako jeho název se specifikátor třídy proměnlivého úložiště používá pouze na datovém členu třídy, aby byl modifikovatelný, i když je člen součástí objektu deklarovaného jako const. Statické nebo konstantní nebo referenční členy nemohou použít proměnlivý specifikátor. Když deklarujeme funkci jako const, tento ukazatel předaný funkci se stane const.
44. Definujte proměnnou Rozsah bloku.
Rozsah proměnné je tedy oblast, kde je proměnná přístupná. Existují dvě oblasti působnosti, A globální a blokové nebo místní.
Proměnná rozsahu bloku je také známá jako proměnná místního rozsahu. Proměnná, která je definována uvnitř funkce (jako hlavní) nebo uvnitř bloku (jako smyčky a bloky if), je lokální proměnná. Může být použit POUZE uvnitř té konkrétní funkce/bloku, ve kterém je deklarován. proměnná s rozsahem bloku nebude k dispozici mimo blok, i když je blok uvnitř funkce.
Další informace viz Rozsah proměnné
45. Jakou funkci má klíčové slovo Auto?
Klíčové slovo auto lze použít k deklaraci proměnné s komplexním typem přímočarým způsobem. Auto můžete použít k deklaraci proměnné, pokud inicializační fráze obsahuje šablony, ukazatele na funkce, odkazy na členy atd. Díky možnostem odvozování typu můžeme strávit méně času vypisováním věcí, které už kompilátor zná. Protože všechny typy jsou odvozeny pouze ve fázi kompilátoru, čas pro kompilaci se mírně prodlouží, ale neovlivní to běh programu.
Další informace viz Auta v C++
46. Definujte jmenný prostor v C++.
Jmenné prostory nám umožňují organizovat pojmenované položky, které by jinak měly globální rozsah, do menších rozsahů, což nám umožňuje přidělit jim rozsah jmenného prostoru. To umožňuje organizovat části programu do odlišných logických oborů s názvy. Jmenný prostor poskytuje místo pro definování nebo deklaraci identifikátorů, jako jsou proměnné, metody a třídy.
Nebo bychom mohli říci, že jmenný prostor je deklarativní zóna, která dává identifikátorům (názvy typů, funkcí, proměnných atd.) v ní rozsah. Jmenné prostory se používají k uspořádání kódu do logických kategorií a k zabránění kolizím jmen, k nimž může dojít, když máte ve své kódové základně mnoho knihoven.
Další informace viz Jmenný prostor v C++
47. Kdy se používá návratový typ void()?
Klíčové slovo void při použití jako návratový typ funkce označuje, že funkce nevrací hodnotu. Při použití jako seznam parametrů pro funkci, void znamená, že funkce nebere žádné parametry. Funkce nevracející hodnotu jsou také známé jako funkce void. Říká se jim neplatné, protože nejsou navrženy tak, aby něco vracely. Pravda, ale jen částečně. Nemůžeme vrátit hodnoty z void funkcí, ale určitě můžeme něco vrátit. Ačkoli funkce void nemají návratový typ, mohou vracet hodnoty.
Další informace viz Neplatný návratový typ .
48. Jaký je rozdíl mezi mělkou a hlubokou kopií?
Mělká kopie | Deep Copy |
|---|---|
| V Mělké kopii se uloží kopie původního objektu a nakonec se zkopíruje pouze referenční adresa. Jednoduše řečeno, mělká kopie duplikuje co nejméně | V Hluboké kopii se ukládá kopie původního objektu i opakované kopie. Jednoduše řečeno, Deep copy vše duplikuje |
| Mělká kopie kolekce je kopií struktury kolekce, nikoli prvků. S mělkou kopií nyní dvě kolekce sdílejí jednotlivé prvky. | Hluboká kopie kolekce jsou dvě kolekce se všemi prvky původní kolekce duplikovanými. |
| Mělká kopie je rychlejší | Hluboké kopírování je poměrně pomalejší. |
Další informace viz Mělká kopie VS Deep Copy
49. Můžeme zavolat virtuální funkci z konstruktoru?
Ano, můžeme volat virtuální funkci z konstruktoru. Ale může vyvolat výjimku přepsání.
50. Co jsou ukazatele neplatnosti?
Stejně jako jeho název je i void ukazatel ukazatel, který není spojen s ničím ani s žádným datovým typem. Ukazatel void však může obsahovat hodnotu adresy libovolného typu a lze jej převést z jednoho datového typu na jiný.
Více informací viz Void Ukazatel v C++
Bonusová otázka:
Co je ‚ tento ‘ukazatel v C++?
tento ukazatel umožňuje každému objektu mít přístup ke své vlastní adrese prostřednictvím základního ukazatele. Všechny členské funkce přebírají tento ukazatel jako implicitní argument. tento ukazatel lze použít k odkazování na volající objekt v rámci členské funkce.
- tento ukazatel se používá k předání objektu jako parametru jiné metodě.
- Každý objekt získá svou vlastní kopii datového členu.
- tento ukazatel se používá k deklaraci indexerů.
Další informace viz tento ukazatel v C++