Nomes de classe
As declarações da classe introduzem novos tipos, chamados de nomes de classe ou tipos de classe, em programas. Com exceção das declarações de encaminhamento, essas declarações de classe também atuam como definições da classe para uma determinada unidade de tradução. Pode haver apenas uma definição para um determinado tipo de classe tipo por unidade de tradução. Usando esses novos tipos da classe, você pode declarar objetos e o compilador pode executar a verificação do tipo para verificar se nenhuma operação incompatível com os tipos está sendo executada nos objetos.
Comentários
Um exemplo dessa verificação de tipo é:
// 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;
}
Como o código acima mostra, as operações (como a atribuição e passagem de argumento) em objetos de tipo classe estão sujeitas à mesma verificação de tipo que os objetos de tipos internos.
Como o compilador faz a distinção entre tipos de classe, as funções podem ser sobrecarregadas com base nos argumentos do tipo de classe assim como nos argumentos de tipo interno. Para obter mais informações sobre as funções sobrecarregadas, consulte Sobrecarregamento de função e Sobrecarregamento.