Level : WORDPRESS BOOK LINKEDIN PATENT Send Mail 동냥하기 hajunho.com

반응형

프로그래밍 언어마다 `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` 사용 방식은 변수 값 고정, 참조 고정, 컴파일 타임 상수 등 다양한 특성을 포함하며, 특히 포인터나 객체 참조를 허용하는 언어에서는 참조와 값 변경에 차이가 생깁니다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기