산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C++의 스토리지 클래스

스토리지 클래스는 C++ 프로그램 내에서 변수 및/또는 함수의 범위(가시성)와 수명을 정의합니다. 이러한 지정자는 수정하는 형식 앞에 옵니다. C++ 프로그램에서 사용할 수 있는 다음과 같은 스토리지 클래스가 있습니다.

자동 스토리지 클래스

자동 스토리지 클래스는 모든 로컬 변수에 대한 기본 스토리지 클래스입니다.

{
   int mount;
   auto int month;
}

위의 예는 동일한 스토리지 클래스를 가진 두 개의 변수를 정의합니다. auto는 함수 내에서만 사용할 수 있습니다. 즉, 로컬 변수입니다.

저장소 등급 등록

등록 스토리지 클래스는 RAM 대신 레지스터에 저장해야 하는 로컬 변수를 정의하는 데 사용됩니다. 이는 변수의 최대 크기가 레지스터 크기(보통 한 단어)와 같으며 단항 '&' 연산자를 적용할 수 없음을 의미합니다(메모리 위치가 없기 때문에).

{
   register int  miles;
}

레지스터는 카운터와 같이 빠른 액세스가 필요한 변수에만 사용해야 합니다. 또한 '레지스터'를 정의한다고 해서 변수가 레지스터에 저장되는 것은 아닙니다. 이는 하드웨어 및 구현 제한 사항에 따라 레지스터에 저장될 수 있음을 의미합니다.

정적 스토리지 클래스

정적 스토리지 클래스는 범위에 들어오고 나갈 때마다 지역 변수를 생성하고 소멸시키는 대신 프로그램의 수명 동안 지역 변수를 유지하도록 컴파일러에 지시합니다. 따라서 지역 변수를 정적으로 만들면 함수 호출 간에 값을 유지할 수 있습니다.

정적 수정자는 전역 변수에도 적용될 수 있습니다. 이 작업이 완료되면 해당 변수의 범위가 선언된 파일로 제한됩니다.

C++에서 static이 클래스 데이터 멤버에 사용되면 해당 클래스의 모든 개체에서 해당 멤버의 복사본 하나만 공유하게 됩니다.

라이브 데모
#include <iostream>
 
// Function declaration
void func(void);
 
static int count = 10; /* Global variable */
 
main() {
   while(count--) {
      func();
   }
   
   return 0;
}

// Function definition
void func( void ) {
   static int i = 5; // local static variable
   i++;
   std::cout << "i is " << i ;
   std::cout << " and count is " << count << std::endl;
}

위의 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다. -

i is 6 and count is 9
i is 7 and count is 8
i is 8 and count is 7
i is 9 and count is 6
i is 10 and count is 5
i is 11 and count is 4
i is 12 and count is 3
i is 13 and count is 2
i is 14 and count is 1
i is 15 and count is 0

extern 스토리지 클래스

외부 스토리지 클래스는 모든 프로그램 파일에서 볼 수 있는 전역 변수에 대한 참조를 제공하는 데 사용됩니다. 'extern'을 사용하면 변수를 초기화할 수 없습니다. 변수 이름이 이전에 정의된 저장 위치를 ​​가리키기만 하면 됩니다.

여러 파일이 있고 다른 파일에서도 사용될 전역 변수 또는 함수를 정의하는 경우 extern 정의된 변수 또는 함수의 참조를 제공하기 위해 다른 파일에서 사용됩니다. extern 이해를 위해 다른 파일에서 전역 변수 또는 함수를 선언하는 데 사용됩니다.

extern 수정자는 아래에 설명된 것과 같이 동일한 전역 변수 또는 함수를 공유하는 두 개 이상의 파일이 있을 때 가장 일반적으로 사용됩니다.

첫 번째 파일:main.cpp

#include <iostream>
int count ;
extern void write_extern();
 
main() {
   count = 5;
   write_extern();
}

두 번째 파일:support.cpp

#include <iostream>

extern int count;

void write_extern(void) {
   std::cout << "Count is " << count << std::endl;
}

여기, extern 키워드가 다른 파일에서 count를 선언하는 데 사용되고 있습니다. 이제 이 두 파일을 다음과 같이 컴파일하십시오 -

$g++ main.cpp support.cpp -o write

그러면 쓰기가 생성됩니다. 실행 가능한 프로그램, write 실행 시도 다음과 같이 결과를 확인하십시오 -

$./write
5

변경 가능한 스토리지 클래스

변경 가능 지정자는 이 자습서의 뒷부분에서 설명하는 클래스 개체에만 적용됩니다. 객체의 멤버가 const 멤버 함수를 재정의할 수 있도록 합니다. 즉, 가변 멤버는 const 멤버 함수로 수정할 수 있습니다.


C 언어

  1. C++ 연산자
  2. C++ 클래스 및 개체
  3. C++ friend 함수 및 friend 클래스
  4. C++ 클래스 템플릿
  5. C 스토리지 클래스
  6. C - 스토리지 클래스
  7. C++의 다형성
  8. C++의 데이터 추상화
  9. C++의 데이터 캡슐화
  10. C++의 인터페이스(추상 클래스)