프로그래밍/C,C++,C#

[C/C++] #define과 const 차이

Beginner:) 2022. 3. 4.
320x100

#define, const 모두 상수를 처리할 때 사용한다. 

 

#define은 전처리기에서 수행되며 단순히 값을 치환하는 구조이며

 

const는 메모리를 할당받는 변수이다.

 

즉 #define은 데이터가 저장된 메모리 공간을 가르키는 리터럴 상수이며 별도의 메모리를 할당하지 않는다.

 

const는 심볼릭 상수로 별도의 메모리를 할당받는 변수이므로 type을 지정해주어야 한다. stack영역에 할당되기에 필드종료시 메모리에 해제된다.

 

 

추가적으로 const의 경우 클래스 이니셜라이저는 생성자가 호출되기 전에 완료가 되기 때문에 const 변수를 초기화할 수 있다.

 

아래는 const 변수의 값을 0으로 지정했지만 이니셜라이저 특징으로 const의 변수 값을 초기화하는 코드이다.

#include <iostream>

class Test {
	const int value = 0;
public:
	Test(int x)
		: value(x) {

	}
	int getValue() {
		return value;
	}
};

int main(void) {
	Test test(999);
	std::cout << "result : " << test.getValue() << std::endl;
	return 0;
}

 

반응형

댓글