Noms de classes
Les déclarations de classes présentent de nouveaux types, appelés noms de classe ou types de classe, dans les programmes. Hormis les déclarations anticipées, ces déclarations de classes agissent également comme définitions de la classe d'une unité de traduction donnée. Il ne peut y avoir qu'une définition d'un type de classe donné par unité de traduction. Ces nouveaux types de classe vous permettent de déclarer des objets, et le compilateur peut exécuter la vérification de type pour vérifier qu'aucune opération incompatible avec les types n'est exécutée sur les objets.
Notes
Voici un exemple de vérification de type :
// 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;
}
Comme l'illustre le code précédent, les opérations (telles que l'assignation et la transmission d'arguments) sur des objets de type de classe sont soumises à la même vérification de type que des objets de types intégrés.
Étant donné que le compilateur différencie les types de classe, des fonctions peuvent être surchargées selon les arguments de type de classe ainsi que les arguments de type intégré. Pour plus d'informations sur les fonctions surchargées, consultez Surcharge des fonctions et Surcharge.