다음을 통해 공유


선언 및 정의 (C++)

선언 컴파일러 프로그램 요소 또는 이름이 존재 하는지 확인 합니다.정의 지정 이름을 어떤 코드 또는 데이터를 설명 합니다.이름은 사용 하기 전에 선언 해야 합니다.

Declarations

선언 하나 이상의 이름을 프로그램에 소개합니다.선언은 프로그램에서 두 번 이상 발생할 수 있습니다.따라서, 형식, 클래스, 구조, 열거 하 고 각 컴파일 단위에 대해 다른 사용자 정의 형식을 선언할 수 있습니다.이 여러 선언에 제약 조건을 선언 모두 동일 해야 됩니다.또한 선언을 사용 될 정의 경우를 제외 하 고 선언 합니다.

  1. 함수 프로토타입 (함수 선언 함수 본문이 없으므로 사용)입니다.

  2. 포함 되어 있는 extern 지정자 있지만 없음 이니셜라이저 개체와 변수 또는 함수 본문 (함수).이 정의 반드시 현재 번역 단위에서 아닙니다 한 이름을 외부 링크 되도록 나타냅니다.

  3. 정적 데이터 멤버는 클래스 선언 내부에 있습니다.

    이산 변수가 클래스의 모든 개체에서 공유 하므로 정적 클래스 데이터 멤버는 정의 되 고 클래스 선언 외부 초기화 합니다.(클래스 및 클래스 멤버에 대 한 자세한 내용은 클래스입니다.)

  4. 같은 클래스 이름을 선언 하지 다음과 같은 정의가 포함 된 class T;.

  5. 되는 typedef 문의입니다.

정의 다음 선언의 예입니다.

// Declare and define int variables i and j.
int i;
int j = 10;

// Declare enumeration suits.
enum suits { Spades = 1, Clubs, Hearts, Diamonds };

// Declare class CheckBox.
class CheckBox : public Control
{
public:
            Boolean IsChecked();
    virtual int     ChangeState() = 0;
};

정의 되지 않은 일부 선언은 다음과 같습니다.

extern int i;
char *strchr( const char *Str, const char Target );

정의

한 정의 개체 또는 변수, 함수, 클래스, 또는 열거자의 고유 사양입니다.정의 고유 해야 하므로 지정된 된 프로그램 요소에 대 한 하나의 정의 프로그램 포함할 수 있습니다.선언 및 정의 다 대 일 대응 될 수 있습니다.두 가지 경우에서 프로그램 요소 선언 고 수 정의 되지 않음입니다.

  1. 함수 선언 되었지만 해당 함수의 주소를 사용 하는 식 또는 함수 호출을 참조 하지.

  2. 클래스 정의가 알려 하지 않아도 방식에만 사용 됩니다.그러나 클래스를 선언 합니다.이 경우를 다음 코드를 보여 줍니다.

    // definitions.cpp
    class WindowCounter;   // Forward reference; no definition
    
    class Window
    {
       // Definition of WindowCounter not required
       static WindowCounter windowCounter;
    };
    
    int main()
    {
    }
    

참고 항목

참조

기본 개념