Имена классов
Объявления классов создают в программах новые типы, называемые именами классов или типами классов. За исключением опережающих объявлений, эти объявления классов также используются как определения классов для определенной записи преобразования. Для любого конкретного типа класса в каждой записи преобразования может быть только одно определение. Используя новые типы классов, можно объявлять объекты и компилятор может производить проверку типов, чтобы исключить выполнение с объектами операций, несовместимых с их типами.
Заметки
Пример такой проверки типов:
// 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;
}
Как показано в приведенном выше примере кода, для операций (например, присваивание или передача аргументов) с объектами типов класса выполняются такие же проверки типов, что и для объектов встроенных типов.
Поскольку компилятор различает типы классов, возможна перегрузка функций в зависимости как от аргументов типов класса, так и от аргументов встроенных типов. Дополнительные сведения о перегруженных функциях см. в разделе Перегрузка функций и Перегрузка.