프로그래밍 언어마다 `const` 키워드는 다르게 동작할 수 있습니다. 일반적으로 `const`는 "변경할 수 없는 상수"를 의미하지만, 각 언어에서의 구현 방식이나 제약이 다르기 때문에 이를 요약해 보겠습니다.
---
### 1. **C와 C++**
- **C**:
- `const`를 사용하여 **변수의 값을 변경하지 못하게 고정**합니다.
- 예를 들어, `const int x = 10;`은 `x`를 상수로 정의하여 이후 코드에서 값을 변경할 수 없게 합니다.
- 포인터와 함께 사용 시, 포인터가 가리키는 값 또는 포인터 자체를 변경할 수 없도록 할 수 있습니다.
- **C++**:
- C와 동일하게 변수의 값을 고정합니다.
- 멤버 함수의 앞에 `const`를 붙여, **객체 상태를 변경하지 않는 함수임**을 명시할 수 있습니다.
- `const` 객체는 `const` 멤버 함수만 호출할 수 있습니다.
- `constexpr`이 추가되어, 컴파일 시간 상수를 보다 명확하게 정의할 수 있게 되었습니다.
### 2. **JavaScript**
- `const`는 **변수에 할당된 참조를 변경하지 못하게** 합니다.
- 원시 타입(숫자, 문자열 등)일 경우, 값을 변경할 수 없습니다.
- 객체나 배열 같은 참조 타입일 경우, **객체 자체의 속성이나 배열 요소는 변경 가능**하지만, 참조 자체를 변경할 수 없습니다.
- 예: `const arr = [1, 2, 3]; arr[0] = 4; // 가능, arr = [4, 5]; // 불가능`
### 3. **Java**
- `const` 키워드는 존재하지만, 사용되지 않습니다. 대신 **`final` 키워드를 사용**합니다.
- `final`은 변수, 메서드, 클래스에 사용되며 각각 다음과 같은 의미를 가집니다:
- 변수: 값을 변경할 수 없는 상수가 됩니다.
- 메서드: 서브클래스에서 오버라이드할 수 없습니다.
- 클래스: 상속될 수 없는 클래스가 됩니다.
### 4. **Python**
- Python에는 `const` 키워드가 없으며, **관습적으로 상수는 대문자 변수명**을 사용하여 정의합니다.
- 예: `PI = 3.14159`
- 실제로는 변경이 가능한 변수이며, 개발자가 이를 상수로 간주하고 변경하지 않는 방식입니다.
### 5. **TypeScript**
- JavaScript와 비슷하게 `const`는 참조를 변경하지 못하도록 합니다.
- TypeScript는 정적 타입을 제공하므로, `const`와 함께 타입을 지정할 수도 있습니다.
- 예: `const num: number = 10;`
### 6. **Rust**
- `const`는 **컴파일 타임 상수를 정의**합니다. 변경이 불가능하며, 컴파일 시에 값이 결정됩니다.
- `let`과 함께 `mut` 키워드를 사용하여 가변 변수를 선언할 수 있지만, `const`로 선언된 변수는 절대 변경할 수 없습니다.
- `static`과 함께 `const`를 사용하면 전역 상수를 정의할 수 있습니다.
### 7. **Kotlin**
- Kotlin에서는 **`val`과 `const val`을 사용**합니다.
- `val`: **런타임 상수**를 정의하며, 변경이 불가능하지만 컴파일 타임에 상수로 다루어지지는 않습니다.
- `const val`: **컴파일 타임 상수**로, 객체 내에서는 사용될 수 없고 클래스 내에서만 사용 가능합니다.
- `var`: 변경 가능한 변수입니다.
### 8. **Swift**
- Swift에서는 `let`이 `const`와 유사하게 동작합니다. **변수의 값을 변경할 수 없도록** 고정합니다.
- `let` 키워드는 초기화 후 값이 고정되어, 상수로 사용할 수 있습니다.
- `var`는 변경 가능한 변수입니다.
### 9. **PHP**
- PHP에서는 `const` 키워드가 클래스나 전역 상수에 사용됩니다.
- `define()` 함수도 상수를 정의하는 데 사용될 수 있지만, `const`는 컴파일 시에 처리되는 상수로 더 빠르게 동작합니다.
- PHP 7.4부터는 객체 내부에서 `const`와 함께 값을 변경하지 않는 상수를 정의할 수 있습니다.
### 10. **Go**
- `const`는 **컴파일 타임 상수**를 정의합니다. 기본적인 수치 상수나 문자열에 사용할 수 있지만, 배열이나 슬라이스에는 적용할 수 없습니다.
- Go에서 `const`는 상수 표현식을 지원하기 때문에 단순한 리터럴 또는 상수 연산의 결과로 정의해야 합니다.
### 요약
언어별 `const` 사용 방식은 변수 값 고정, 참조 고정, 컴파일 타임 상수 등 다양한 특성을 포함하며, 특히 포인터나 객체 참조를 허용하는 언어에서는 참조와 값 변경에 차이가 생깁니다.
'HJH IT Logs' 카테고리의 다른 글
다양한 매체와 전문가들이 선정한 역대 최고의 게임 100가지 (0) | 2024.11.06 |
---|---|
UEP 업데이트 (0) | 2024.11.05 |
Git on Windows has some differences compared to Git on Linux (0) | 2024.11.02 |
jetbrains C++ tools (0) | 2024.11.02 |
아이언맨 안경 뉴스 (0) | 2024.10.30 |
최근댓글