이이프
IeF 제멋대로 세상
이이프
전체 방문자
오늘
어제

공지사항

  • ✔ Info
  • 전체 글보기 (56)
    • 💻프로그래밍 내용 정리 (55)
      • C (0)
      • C++17 (55)
    • 💻게임메이커 (0)
    • 💻언리얼엔진 (0)
    • 💻유니티 (0)
    • 🎈[팀&자작]게임소개 (0)
    • 📃게임제작기술 (0)
    • 🎨그림놀이 (0)
    • 📒대학생활 (0)
    • 😃잡담 (1)
    • 🕹게임성과 (0)
    • 💷자격증 (0)

블로그 메뉴

  • 방명록

최근 글

최근 댓글

티스토리

hELLO · Designed By 정상우.
이이프

IeF 제멋대로 세상

💻프로그래밍 내용 정리/C++17

[C++ 1.2.3] Const의 다양한 용도

2022. 8. 16. 17:01
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
    '💻프로그래밍 내용 정리/C++17' 카테고리의 다른 글
    • [C++ 1.2.5] 익셉션(exception(예외)), throw 구문, catch/try 구문
    • [C++ 1.2.4] 레퍼런스, Const 레퍼런스
    • [C++ 1.2.2] 스택과 힙, 포인터와 동적 메모리, 역참조, 배열 포인터, 널 포인터 상수(NULL), 스마트 포인터(unique_ptr, shared_ptr)
    • [C++ 1.2.1] C++의 스트링
    이이프
    이이프
    게임 프로그래머 지망생 / Since 2022.08.14

    티스토리툴바