Nazwy klas
Deklaracje klas wprowadzają nowe typów, nazywane nazwami klas lub typy klas do programów.Z wyjątkiem deklaracji do przodu te deklaracje klas również działają jak definicja klasy dla danej jednostki tłumaczenia.Może to być tylko jedna definicja typu dla danej klasy na jednostkę tłumaczenia.Za pomocą tych nowego typu klas, można zadeklarować obiekty i kompilator może wykonywać kontrolę typów, aby sprawdzić, czy żadnej operacje niezgodne z typami obiektów zostaną wykonane na obiektach.
Uwagi
Przykładem takiego typu sprawdzania jest:
// 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;
}
Zgodnie z tym, co powyższy kod ilustruje, operacje (takie jak przypisania i przekazywanie argumentów) na obiektach typu klasy są przedmiotem tego samego sprawdzania typów jako obiekty typów wbudowanych.
Ponieważ kompilator rozróżnia typy klas, funkcje mogą być przeciążone na podstawie argumentów typu klasy, a także argumentów typów wbudowanych.Aby uzyskać więcej informacji dotyczących przeciążonych funkcji, zobacz Przeciążanie funkcji i Przeciążanie.