본문 바로가기

프로그래밍기초/C++

C++에서 explicit

C++에서 explicit 키워드는 생성자(constructor) 또는 변환 연산자(conversion operator)에 적용되어 암시적(implicit) 변환을 방지하는 데 사용됩니다. explicit 키워드를 사용하면 특정 상황에서 자동으로 발생할 수 있는 잘못된 변환을 방지하여 코드의 안전성과 명확성을 높일 수 있습니다.

예시

암시적 변환

다음과 같은 클래스가 있다고 가정해 봅시다.

class MyClass {
public:
    MyClass(int x) { /*...*/ }
};

위와 같은 클래스가 있을 때, 다음과 같은 코드가 가능해집니다.

MyClass obj = 10; // 암시적 변환

위 코드는 int 타입의 값을 MyClass 객체로 암시적으로 변환합니다.

explicit 사용

위와 같은 암시적 변환을 방지하려면 생성자에 explicit 키워드를 추가합니다.

class MyClass {
public:
    explicit MyClass(int x) { /*...*/ }
};

이제 다음과 같은 코드는 컴파일 오류를 발생시킵니다.

MyClass obj = 10; // 컴파일 오류: 암시적 변환 방지됨

explicit 키워드를 사용하면 다음과 같이 명시적으로 객체를 생성해야 합니다.

MyClass obj(10); // 명시적 변환

요약

  • explicit 키워드는 생성자 또는 변환 연산자에 적용되어 암시적 변환을 방지합니다.
  • 이를 통해 코드의 안전성과 명확성을 높일 수 있습니다.
  • 암시적 변환을 방지하고 싶을 때 explicit 키워드를 사용합니다.

이를 통해 실수로 인한 잘못된 타입 변환을 방지하고 코드의 의도를 더 명확하게 전달할 수 있습니다.

반응형