C++ using 키워드

Seongcheol Jeon·2024년 12월 7일
0

CPP

목록 보기
37/47
post-thumbnail

using은 지금까지는 네임스페이스를 생략하는 데에 주로 사용했다. 여기서는 상속 멤버의 접근 지정자 변경, 열거형 사용 선언, 별칭(alias)using의 다양한 활용버을 살펴보자.

상속 멤버의 접근 지정자 변경

using 키워드는 자식 클래스에서 부모 클래스의 멤버 접근 지정자를 변경할 때 사용할 수 있다. 상속받은 클래스의 멤버는 상속 지정자에 맞게 접근 지정자가 변경되지만, 때로는 상속 지정자와 다르게 멤버 함수, 변수의 접근 범위를 개방하는 쪽으로 바꿔야 할 수 있다.

이때 자식 클래스에서 부모 클래스의 멤버를 using으로 선언하면 접근 범위변경된다.

그리고 부모 클래스의 접근 지정자는 무시된다. 이렇게 변경할 수 있는 접근 지정자protected이다. 즉, 부모 클래스에서 protected로 지정된 멤버를 using으로 접근 지정자를 변경할 수 있다. 단, private으로 선언된 멤버의 접근 지정자는 변경할 수 없다.

문법은 간단하다. 자식 클래스의 public 범위에서 using과 함께 부모 클래스에서 protected로 지정한 멤버를 다시 선언해 주면 된다.

public:
using ParentClass::get_value;

열거형 사용 선언

열거형을 선언한 후에 구조체나 클래스 내부에서 사용할 때는 열거형 이름과 함께 사용하면 된다. 만약 열거형 선언을 구조체나 클래스 내부에 있는 데이터 형식처럼 사용하려면 해당 클래스나 구조체에서 using 키워드로 선언하면 된다. 이렇게 하면 열거형과 구조체 또는 클래스 간에 관계를 논리적으로 만들 수 있다.

enum class mydata : int { aa, bb, cc };

struct MyStruct {
	// 외부에 선언된 열거형을 내부에 사용 선언
    using enum weapon;
};

...
MyStruct myst;

myst.aa;
myst.bb;

별칭 만들기

typedef 키워드와 마찬가지로 using 키워드를 사용하면 별칭(alias)을 만들 수 있다. 가장 큰 차이점은 별칭이 지칭하는 함수 등에 템플릿을 포함할 경우 using만 사용할 수 있다는 것이다. 그리고 using을 사용하면 키워드 다음에 바로 별칭이 나오므로 코드를 읽기도 좋다.

using 키워드로 별칭을 만들려면 using 다음에 별칭을 적은 후 =로 별칭을 부여할 식별자를 작성하면 된다.

using 별칭 = 식별자
typedef struct _tag {
	...
};

using DATA = struct _tag;

0개의 댓글