본문 바로가기
{Programing}/C.C++

c/c++ 클래스에서의 static, const

by 탱타로케이 2020. 1. 28.

static : 클래스, 구조체가 아닌 곳에서 사용할때는 변수를 정적 변수로 바꾼다.

 

변수는 기본적으로 자동주기에 의해 코드블럭 밖으로 나가거나, 함수가 종료되면 삭제된다.

 

그러나 static 접두사가 붙으면 정적 주기로 바뀌어 범위를 벗어나도 삭제 되지 않는다.

 

선언과 동시에 초기화가 권장되며 프로그램 종료시까지 유지된다.

 

범위는 지역변수와 같으며, 용도는 전역변수와 같다.

 

 

const : 변수를 상수화 시키는 접두사. 일반 변수를 임의대로 변경할 수 없게 하여 고유의 값으로 사용하도록 한다.

 

 

클래스 멤버 변수 및 함수의 static

 

멤버 변수,함수에서 사용되는 static은 공유의 기능을 가진다.

 

객체 : 기본 static 변수와 같은 기능.

 

멤버 변수 : 해당 클래스로 생성된 객체에서 공유되는 변수. 생성자 초기화가 불가. 클래스 외부에서 값을 할당한다. 외부에서 초기화 되지 않으면 링크에러 발생.

 

멤버 함수 : 객체 생성 여부와 상관없이 모든 부분에서 사용가능.  클래스명 :: 함수명(); 으로 사용.

 

클래스 멤버 변수 및 함수의 const

 

상수화가 필요한 경우나, 변경을 금지할때 사요한다.

 

객체 : 기본 const 변수와 같은 기능.

 

멤버 변수 : 고정된 값이 필요한 변수를 const 멤버 변수로 만든다. 생성자의 멤버 이니셜라이저로 const 멤버 변수를 초기화한다. 이러는 이유는 const 변수는 선언과 동시에 초기화해야하지만 임의의값이 아닌 필요한 값으로 초기화 하기위한 이유이다.

 

멤버 함수 :  접두사를 접미사로 사용한다. 해당 함수 내부에서 멤버 변수를 변경하지 못하도록 한다. 즉, 변경 금지 구역 설정이라고 볼 수 있다. 이러한 이유로 const 멤버함수 내부에서 비 const 멤버 함수를 호출할수 없으며, 멤버 변수의 포인터를 반환할 수도 없다. 오버로딩에서도 다른 함수로 인식된다. 오버로딩 된 함수일 때, 비 const 멤버함수가 const 멤버 함수에 비해 우선순위가 높다.

 

 

 

댓글