다음을 통해 공유


클래스 이름

클래스 선언은 클래스 이름 또는 클래스 형식이라는 새 형식을 프로그램에 도입합니다. 정방향 선언을 제외하고 이러한 클래스 선언은 지정된 변환 단위에 대한 클래스 정의의 역할도 합니다. 지정된 클래스 형식에 대한 정의는 변환 단위당 하나만 있을 수 있습니다. 이러한 새 클래스 형식을 사용하여 개체를 선언할 수 있으며, 컴파일러는 형식 검사를 수행하여 해당 형식과 호환되지 않는 연산이 개체에 대해 수행되지 않는지 확인할 수 있습니다.

설명

이러한 형식 검사의 예는 다음과 같습니다.

// 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;
}

위의 코드에서 보여주듯이 클래스 형식 개체에 대한 연산(예: 할당 및 인수 전달)에는 기본 제공 형식의 개체와 동일한 형식 검사가 적용됩니다.

컴파일러에서 클래스 형식을 구분하기 때문에 기본 제공 형식 인수뿐만 아니라 클래스 형식 인수를 기준으로 함수가 오버로드될 수 있습니다. 오버로드된 함수에 대한 자세한 내용은 함수 오버로드오버로드를 참조하십시오.

참고 항목

참조

클래스, 구조체 및 공용 구조체