728x90
1. const 상수
const는 상수와 관련 있다.
C 언어에서는 흔히 버전 번호처럼 프로그램을 실행하는 동안
변경하면 안 되는 값에 이름을 붙일 때 전처리 구문인 #define을 사용 했다.
C++ 에서는 상수를 #define 대신 const로 정의한다.
const로 상수를 정의하는 방법은 변수를 정의할 때와 거의 같고,
값이 변경되지 않도록 보장하는 작업은 컴파일러가 처리한다.
const int versionNumberMajor = 2;
const int versionNumberMinor = 1;
const std::string productName = "Super Hyper Net Modulator";
2. const 매개변수
C++에서는 non-const(const가 아닌) 변수를 const 변수로 캐스팅 할 수 있다.
이렇게 하면 다른 코드에서 변수를 변경하지 않도록 어느 정도 보호할 수 있다.
다음 코드는 mysteryFunction()을 호출할 때 string*을 const string*으로 자동으로 캐스팅한다.
이때 mysteryFunction() 안에서 매개변수로 전달된 스트링의 값을 변경하면 컴파일에러가 발생한다.
void mysteryFunction(const std::string* someString)
{
*someString = "Test"; // 이 부분에서 컴파일 에러가 발생한다.
}
int main()
{
std::string myString = "The string";
mysteryFunction(&myString);
return 0;
}
C++에서는 const 변수를 실수로 변경하는 경우만 보호해준다.
'💻프로그래밍 내용 정리 > C++17' 카테고리의 다른 글
[C++ 1.2.5] 익셉션(exception(예외)), throw 구문, catch/try 구문 (0) | 2022.08.16 |
---|---|
[C++ 1.2.4] 레퍼런스, Const 레퍼런스 (0) | 2022.08.16 |
[C++ 1.2.2] 스택과 힙, 포인터와 동적 메모리, 역참조, 배열 포인터, 널 포인터 상수(NULL), 스마트 포인터(unique_ptr, shared_ptr) (0) | 2022.08.16 |
[C++ 1.2.1] C++의 스트링 (0) | 2022.08.16 |
[C++ 1.1.14] 반복문(while 문, do/while, for, 범위 기반 for 문) (0) | 2022.08.15 |