893 Stimmen

Wie deklariert man eine Schnittstelle in C++?

Wie kann ich eine Klasse einrichten, die eine Schnittstelle darstellt? Ist dies nur eine abstrakte Basisklasse?

-1voto

Chen Li Punkte 4377

Hier ist die Definition von abstract class im C++-Standard

n4687

13.4.2

Eine abstrakte Klasse ist eine Klasse, die nur als Basisklasse einer anderen Klasse verwendet werden kann; Objekte einer abstrakten Klasse können nur als Unterobjekte einer von ihr abgeleiteten Klasse erstellt werden. Eine Klasse ist abstrakt, wenn sie mindestens eine rein virtuelle Funktion hat.

-2voto

hims Punkte 315
class Shape 
{
public:
   // pure virtual function providing interface framework.
   virtual int getArea() = 0;
   void setWidth(int w)
   {
      width = w;
   }
   void setHeight(int h)
   {
      height = h;
   }
protected:
    int width;
    int height;
};

class Rectangle: public Shape
{
public:
    int getArea()
    { 
        return (width * height); 
    }
};
class Triangle: public Shape
{
public:
    int getArea()
    { 
        return (width * height)/2; 
    }
};

int main(void)
{
     Rectangle Rect;
     Triangle  Tri;

     Rect.setWidth(5);
     Rect.setHeight(7);

     cout << "Rectangle area: " << Rect.getArea() << endl;

     Tri.setWidth(5);
     Tri.setHeight(7);

     cout << "Triangle area: " << Tri.getArea() << endl; 

     return 0;
}

Ergebnis: Rechteckige Fläche: 35 Fläche des Dreiecks: 17

Wir haben gesehen, wie eine abstrakte Klasse eine Schnittstelle in Form von getArea() definiert hat und zwei andere Klassen dieselbe Funktion implementiert haben, jedoch mit einem anderen Algorithmus, um die für die Form spezifische Fläche zu berechnen.

5 Stimmen

Das ist nicht das, was man unter einer Schnittstelle versteht! Das ist nur eine abstrakte Basisklasse mit einer Methode, die überschrieben werden muss! Schnittstellen sind in der Regel Objekte, die nur Methodendefinitionen enthalten - ein "Vertrag", den andere Klassen erfüllen müssen, wenn sie die Schnittstelle implementieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X