본문 바로가기

프로그래밍 언어/C++

C++에 정의한 entity란?

반응형

 

모든 entity를 declaration할 수 있는 것은 아니지만, declaration할 수 있는 모든 프로그램 구성요소는 entity다. 따라서 다음처럼 정의할 수 있다.

C++ 프로그램이 다루는 모든 요소를 entity이고, 일부를 제외한 대부분의 enity는 선언의 대상이 될 수 있다.

선언되는 Entity vs 선언되지 않는 Entity
// 1. 선언되는 entity
int x;              // x(객체)는 선언됨
void foo();         // foo(함수)는 선언됨

// 2. 선언되지 않는 entity - 값(value)
int result = 42;    // result는 선언됨, 하지만 42(값)는 선언되지 않음
                    // 42는 리터럴 값이며 entity이지만 선언의 대상이 아님

std::string s = "hello";  // s는 선언됨
                          // "hello"(문자열 리터럴 값)는 entity이지만 선언되지 않음

int* ptr = nullptr;       // ptr는 선언됨
                          // nullptr(널 포인터 값)는 entity이지만 선언되지 않음
                          // nullptr은 미리 정의된 키워드/값

// 3. 다른 예
int arr[3] = {1, 2, 3};   // arr는 선언됨
                          // 1, 2, 3은 값 entity이지만 선언되지 않음

const char* cptr = "text"; // cptr는 선언됨
                           // "text"는 문자열 리터럴 객체(entity)지만
                           // 명시적으로 선언되지 않음 (컴파일러가 자동 생성)
핵심 포인트
  • 선언의 대상: 변수, 함수, 타입, 네임스페이스 등
  • 선언의 대상이 아님: 리터럴 값(42, 3.14, "hello", nullptr 등), 표현식의 결과 값

nullptr은 C++11에서 도입된 키워드로, 널 포인터를 나타내는 입니다. 이것도 entity이지만 우리가 선언하는 것이 아니라 언어에 내장된 값입니다.

 

 

728x90
반응형