Názvy třídy
Deklarace třídy zavádí do aplikací nové typy nazvané názvy tříd nebo typy tříd.S výjimkou dopředných deklarací, tyto deklarace třídy se chovají také jako definice třídy zadané jednotky překladu.Pro zadaný typ třídy může existovat pouze jedna definice na jednotku překladu.Pomocí těchto nových typů třídy lze deklarovat objekty a kompilátor může provádět kontroly typů pro ověření, že neexistují žádné operace vykonané na objektech, které nejsou kompatibilní s typy.
Poznámky
Příkladem takové kontroly typu je:
// 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;
}
Jak ukazuje předchozí kód, jsou operace (jako je například přiřazení a předání argumentu) na objektech typu třídy předmětem stejné kontroly typů jako objekty předdefinovaných typů.
Protože kompilátor rozlišuje mezi typy tříd, funkce lze přetížit na základě argumentů typu třídy, stejně jako argumenty předdefinovaného typu.Další informace o přetížených funkcích naleznete v tématech Přetížení funkce a Přetěžování.