Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ 로컬 클래스(Local Class) 완벽 가이드

C++ 로컬 클래스란?

함수 내부에 선언된 클래스를 C++에서는 로컬 클래스(local class)라고 부릅니다. 이름 그대로 해당 함수 안에서만 지역적으로 유효한 클래스이기 때문입니다.

로컬 클래스의 기본적인 구조는 다음과 같습니다.

#include<iostream>
using namespace std;
void func() {
   class LocalClass {
   };
}
int main() {
   return 0;
}

위 예제에서 func()는 하나의 함수이며, 그 내부에 LocalClass가 정의되어 있습니다. 따라서 이 클래스는 로컬 클래스라고 불립니다.

로컬 클래스의 주요 특징

  • 로컬 클래스의 이름은 자신이 선언된 함수 내부에서만 사용할 수 있으며, 함수 외부에서는 접근할 수 없습니다.
  • 로컬 클래스의 멤버 함수는 반드시 클래스 내부에서 정의해야 합니다.
  • 로컬 클래스는 정적(static) 데이터 멤버를 가질 수 없지만, 정적 멤버 함수는 가질 수 있습니다.

예제

다음 프로그램은 C++에서 로컬 클래스가 실제로 어떻게 동작하는지 보여줍니다.

#include<iostream>
using namespace std;
void func() {
   class LocalClass {
      private:
      int num;
      public:
      void getdata( int n) {
         num = n;
      }
      void putdata() {
         cout<<"The number is "<<num;
      }
   };
   LocalClass obj;
   obj.getdata(7);
   obj.putdata();
}
int main() {
   cout<<"Demonstration of a local class"<<endl;
   func();
   return 0;
}

실행 결과

Demonstration of a local class
The number is 7

코드 설명

위 프로그램에서 LocalClass는 func() 함수 내부에 선언되었으므로 로컬 클래스입니다. 이 클래스는 private 변수 num과, num을 초기화하는 getdata(), 값을 화면에 출력하는 putdata()라는 두 개의 public 멤버 함수를 가지고 있습니다.

클래스 정의가 끝나면 func() 함수 내에서 객체 obj를 생성하고, 이를 통해 getdata()와 putdata()를 순서대로 호출합니다. 해당 코드는 다음과 같습니다.

LocalClass obj;
obj.getdata(7);
obj.putdata();

마지막으로 main() 함수에서는 아래와 같이 func()를 호출하여 전체 동작을 확인합니다.

cout<<"Demonstration of a local class"<<endl;
func();

정리

로컬 클래스는 특정 함수 안에서만 필요한 간단한 헬퍼 타입을 캡슐화할 때 유용합니다. 다만 접근 범위가 함수 내부로 제한되고, 정적 데이터 멤버를 선언할 수 없다는 점은 반드시 기억해 두어야 합니다.