Co jsou rozhraní v C++

Co Jsou Rozhrani V C



Rozhraní, běžně známá jako abstraktní třídy, jsou pouze zdrojem popisu chování třídy, aniž by se zavázaly k implementaci třídy. V programování C++ není vestavěný koncept rozhraní. Abychom mohli začít vytvářet rozhraní, musíme nejprve založit abstraktní třídu pouze s čistě virtuálními funkcemi.

Rozhraní v C++ jsou aplikována pomocí abstraktních tříd. Na druhou stranu se třída nazývá abstraktní třída, pokud je alespoň jedna funkce uvnitř třídy deklarována jako čistě virtuální funkce.

Co je to čistá virtuální funkce

The Čistá virtuální funkce znamená, že uživatelé pouze deklarují funkci a ne její definici. Přepsání metody/funkce se používá k implementaci čistě virtuálních metod v odvozené třídě. Funkce je považována za čistě virtuální, pokud je popsána uvnitř třídy, jak je uvedeno níže:







Zde je syntaxe a Čistá virtuální funkce třídy.



třída Pokoj, místnost {
veřejnost :
// čistá virtuální funkce
virtuální dvojnásobek Getaria ( ) = 0 ;

soukromé :
dvojnásobek délka ; // Délka místnosti
dvojnásobek Šířka ; // Šířka místnosti
} ;

Co je abstraktní třída

Třída, která byla vytvořena speciálně za účelem sloužit jako základní třída, se nazývá an abstraktní třída . V abstraktní třídě musí být přítomna alespoň jedna čistě virtuální funkce. Může obsahovat proměnné a standardní funkce. Odvozené třídy, které má abstraktní třída, by měly implementovat čistě virtuální funkci základní třídy, jinak se stanou abstraktními.



Zvažte následující příklad, ve kterém nadřazená třída poskytuje rozhraní základní třídě, aby základní třída mohla použít čistě virtuální funkci s názvem getArea() . Dvě různé třídy používají totéž getArea() funkce, ale výstup pro oba případy se bude lišit.





#include
použitím jmenný prostor std ;
třída Tvar
{
veřejnost :
virtuální int Getaria ( ) = 0 ;
prázdnota setWidth ( int wth )
{
šířka = wth ;
}

prázdnota setLength ( int lth )
{
délka = lth ;
}

chráněný :
int šířka ;
int délka ;
} ;

třída Obdélník : veřejnost Tvar
{
veřejnost : int Getaria ( )
{
vrátit se ( šířka * délka ) ;
}
} ;

třída Trojúhelník : veřejnost Tvar
{
veřejnost : int Getaria ( )
{
vrátit se ( šířka * délka ) / 2 ;
}
} ;

int hlavní ( prázdnota )
{
Obdélník R ;
Trojúhelník T ;
R. setWidth ( 9 ) ;
R. setLength ( 5 ) ;
cout << 'Plocha obdélníku:' << R. Getaria ( ) << endl ;
T. setWidth ( 9 ) ;
T. setLength ( 5 ) ;
cout << 'Oblast trojúhelníku:' << T. Getaria ( ) << endl ;
vrátit se 0 ;
}

Výstup



Význam rozhraní

Jakákoli třída odvozená z čistě abstraktní třídy (Interface) by měla vždy implementovat každou z metod základní třídy, tj. Interface. Ukazatele rozhraní lze předávat funkcím i třídám, což nám umožňuje volat funkce odvozené třídy odtud samotné.

Jaká jsou pravidla pro používání rozhraní

Při používání rozhraní v C++ by uživatelé měli dodržovat následující pravidla:

  • Deklarujte pouze čistě virtuální funkce.
  • Přiřazeno pouze 0 čistě virtuálním funkcím.
  • Nevytvářejte rozhraní tříd.
  • Pomocí odkazu na základní abstraktní třídu můžeme vytvořit ukazatel na instanci odvozené třídy.

V následujícím kódu rozhraní linuxhint , jako by byla abstraktní třída vytvořena pomocí čisté virtuální metody, stejně jako její funkce je aplikována v podřízené třídě, a nazvali jsme returnString() v hlavní funkci podle pravidel rozhraní.

#include
#include
#include <řetězec>
použitím jmenný prostor std ;

třída linuxhint
{
veřejnost :
virtuální řetězec returnString ( ) = 0 ;
} ;
třída dítě : veřejnost linuxhint
{
veřejnost :
řetězec returnString ( )
{
vrátit se 'Ahoj Linuxhint' ;
}
} ;
int hlavní ( )
{
child child_object ;
linuxhint * pntr ;
pntr = & podřízený_objekt ;
cout < returnString ( ) ;
vrátit se 0 ;
}

Výstup

Závěr

Rozhraní jsou abstraktní třídy, které popisují chování třídy potřebné k implementaci požadované třídy v C++. Výše uvedené pokyny jsou klíčové pro začátečníky, aby zlepšili své programovací dovednosti v C++ prací s rozhraními. Najdete zde také několik příkladů, které vám pomohou naučit se implementaci rozhraní v C++.