반응형

모든 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
반응형
'프로그래밍 언어 > C++' 카테고리의 다른 글
| C++ Declaration의 5가지 효과 (0) | 2025.10.19 |
|---|---|
| C++의 Declaration에 대한 해석(interpretation) 명시 vs 의미적 속성(semantic properties) (0) | 2025.10.19 |
| C++의 underlying entity과 module 관계 (0) | 2025.10.18 |
| C++ 표준 문서에서 언급한 스코프(scope) 관련 용어 (0) | 2025.10.18 |
| pointer conversions에 대해 (0) | 2024.03.02 |