Freigeben über


Klassennamen

Klassendeklarationen stellen die neuen Typen als Klassennamen oder Klassentypen in Programmen vor. Außer bei Vorwärtsdeklarationen fungieren diese Klassendeklarationen auch als Definitionen der Klasse für eine angegebene Übersetzungseinheit. Es kann nur eine Definition für einen angegebenen Klassentyp pro Übersetzungseinheit geben. Mithilfe dieser neuen Klassentypen können Sie Objekte deklarieren, und der Compiler kann die Typüberprüfung durchführen, um sicherzustellen, dass keine Vorgänge, die mit den Typen nicht kompatibel sind, für Objekte ausgeführt werden.

Hinweise

Im Folgenden ist ein Beispiel für eine solche Typüberprüfung angegeben:

// class_names.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
class Point {
public:
   unsigned x, y;
};

class Rect {
public:
   unsigned x1, y1, x2, y2;
};

// Prototype a function that takes two arguments, one of type
//  Point and the other of type pointer to Rect.
int PtInRect( Point, Rect & );

int main() {
   Point pt;
   Rect  rect;

   rect = pt;   // C2679 Types are incompatible.
   pt = rect;   // C2679 Types are incompatible.

  // Error. Arguments to PtInRect are reversed.
  // cout << "Point is " << PtInRect( rect, pt ) ? "" : "not"
  //   << " in rectangle" << endl;
}

Wie der vorhergehende Code veranschaulicht, unterliegen Vorgänge (z. B. Zuweisungs- und Argumentübergabe) an Klassentypobjekten der gleichen Typüberprüfung wie Objekte von integrierten Typen.

Da der Compiler zwischen Klassentypen unterscheidet, können Funktionen anhand von Argumenten des Klassentyps und Argumenten des integrierten Datentyps überladen werden. Weitere Informationen zu überladenen Funktionen finden Sie unter Funktionsüberladung und Überladen.

Siehe auch

Referenz

Klassen, Strukturen und Unions