Jakie są interfejsy w C ++

Jakie są interfejsy w C ++
Interfejsy, powszechnie znane jako klasy abstrakcyjne, są tylko źródłem opisu zachowania klasy bez zaangażowania się we wdrożenie klasy. Nie ma wbudowanej koncepcji interfejsów w programowaniu C ++. Aby rozpocząć tworzenie interfejsu, musimy najpierw ustanowić klasę abstrakcyjną tylko z czystymi funkcjami wirtualnymi.

Interfejsy w C ++ są stosowane przy użyciu klas abstrakcyjnych. Z drugiej strony klasa nazywana jest klasą abstrakcyjną, jeśli co najmniej jedna funkcja w klasie jest zadeklarowana jako czysta funkcja wirtualna.

Jaka jest czysta funkcja wirtualna

Czysta funkcja wirtualna oznacza, że ​​użytkownicy po prostu deklarują funkcję, a nie jej definicję. Zastępowanie metody/funkcji służy do wdrożenia czystej wirtualnej metody w klasie pochodnej. Funkcja jest uważana za czystą wirtualną, jeśli jest opisana w klasie, jak podano poniżej:

Oto składnia Czysta funkcja wirtualna sali klasy.

klasa
publiczny:
// Czysta funkcja wirtualna
Virtual Doublearea () = 0;
prywatny:
podwójna długość; // długość pokoju
podwójna szerokość; // Szerokość pokoju
;

Co to jest klasa abstrakcyjna

Klasa, która została stworzona specjalnie w celu służenia jako klasa podstawowa, nosi nazwę Klasa abstrakcyjna. Co najmniej jedna czysta funkcja wirtualna musi być obecna w klasie abstrakcyjnej. Może zawierać zmienne i funkcje standardowe. Klasy pochodne, które ma klasa abstrakcyjna, powinny zaimplementować czystą wirtualną funkcję klasy podstawowej, w przeciwnym razie staną się abstrakcyjne.

Rozważ następujący przykład, w którym klasa nadrzędna podaje interfejs do klasy podstawowej, aby klasa podstawowa zastosować czystą funkcję wirtualną wywoływaną getarea (). Dwie różne klasy używają tego samego getarea () funkcja, ale dane wyjściowe dla obu przypadków będzie inne.

#włączać
za pomocą przestrzeni nazw Std;
kształt klasy

publiczny:
Virtual int getarea () = 0;
void setWidth (int wth)

szerokość = wth;

void setLength (int lth)

długość = lth;

chroniony:
int szerokość;
długość;
;
Prostokąt klasy: kształt publiczny

public: int getarea ()

powrót (szerokość *długość);

;
Trójkąt klasowy: kształt publiczny

public: int getarea ()

powrót (szerokość *długość) / 2;

;
int Main (void)

Prostokąt r;
Trójkąt t;
R.setWidth (9);
R.SetLength (5);
Cout << "Area of Rectangle: " << R.getArea() << endl;
T.setWidth (9);
T.SetLength (5);
Cout << "Area of Triangle: " << T.getArea() << endl;
powrót 0;

Wyjście

Znaczenie interfejsów

Każda klasa pochodząca z czystej klasy abstrakcyjnej (interfejs) powinna zawsze zaimplementować każdą z metod klasy podstawowej, i.mi., Interfejs. Wskaźniki interfejsu mogą być przekazywane zarówno do funkcji, jak i klas, umożliwiając nam wywołanie funkcji klasą pochodną stamtąd.

Jakie są zasady korzystania z interfejsów

Istnieją następujące reguły, które użytkownicy powinni przestrzegać, aby używać interfejsów w C ++:

  • Deklaruj tylko czyste funkcje wirtualne.
  • Przypisano tylko 0 do czystych funkcji wirtualnych.
  • Nie tworz interfejsu klas.
  • Korzystając z odniesienia do podstawowej klasy abstrakcyjnej, możemy utworzyć wskaźnik do instancji klasy pochodnej.

W poniższym kodzie interfejs Linuxhint, jak klasa abstrakcyjna została stworzona przy użyciu czystej wirtualnej metody, a także jej funkcji jest stosowana w klasie dziecięcej, a my zadzwoniliśmy Returnstring () Metoda w głównej funkcji poprzez przestrzeganie reguł interfejsu.

#włączać
#włączać
#włączać
za pomocą przestrzeni nazw Std;
Klasa Linuxhint

publiczny:
wirtualny ciąg returnstring () = 0;
;
Klasa Dziecko: publiczne Linuxhint

publiczny:
ciąg returnstring ()

powrót „Hello Linuxhint”;

;
int main ()

Dziecko dziecięce;
Linuxhint* pntr;
pntr = & child_object;
Cout powrót 0;

Wyjście

Wniosek

Interfejsy to klasy abstrakcyjne, które opisują zachowanie klasy wymagające wdrożenia wymaganej klasy w C++. Wyżej wymienione wytyczne są kluczowe dla początkujących w celu poprawy umiejętności programowania C ++ poprzez pracę z interfejsami. Znajdziesz również kilka przykładów, które pomogą Ci nauczyć się wdrażania interfejsów w C++.