const 변수와 매개변수
데이터가 변경되지 않도록 보호하기
const 변수와 매개변수은(는) CoddyKit의 무료 C++ Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 C++ Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. C++ Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
const 변수 선언
const 변수는 초기화한 뒤 수정할 수 없습니다. 컴파일러가 이를 강제하므로 실수로 값을 쓰는 경우를 찾아냅니다.
#include <iostream>
int main() {
const int maxUsers = 100;
// maxUsers = 200; // ERROR
std::cout << maxUsers << "\n";
}const 함수 매개변수
값으로 전달되는 매개변수를 const로 지정하면 함수 본문에서 해당 매개변수의 지역 복사본을 변경할 수 없습니다. 이는 문서화와 안전성에 도움이 됩니다.
#include <iostream>
int doubled(const int n) {
// n = 0; // ERROR
return n * 2;
}
int main() { std::cout << doubled(21) << "\n"; }const 참조 매개변수
const&로 전달하면 큰 객체를 복사하지 않으면서 객체를 수정하지 않겠다는 약속을 할 수 있습니다. 문자열과 컨테이너를 전달하는 표준적인 방법입니다.
#include <iostream>
#include <string>
void printLen(const std::string& s) { // no copy, no change
std::cout << s.size() << "\n";
}
int main() { printLen("hello"); }const를 가리키는 포인터
const T*는 이 포인터를 통해 가리키는 값을 변경할 수 없다는 뜻입니다. 다만 포인터 자체는 다른 대상을 가리키도록 바꿀 수 있습니다.
#include <iostream>
int main() {
int a = 1, b = 2;
const int* p = &a;
// *p = 5; // ERROR: value is const
p = &b; // OK: pointer can move
std::cout << *p << "\n";
}const 포인터
T* const는 상수 포인터입니다. 포인터가 가리키는 대상을 바꿀 수 없지만, 그 대상의 값은 수정할 수 있습니다.
#include <iostream>
int main() {
int a = 1;
int* const p = &a;
*p = 9; // OK: value changeable
// p = nullptr; // ERROR: pointer is const
std::cout << *p << "\n";
}선언을 오른쪽에서 왼쪽으로 읽기
const 선언은 오른쪽에서 왼쪽으로 읽으십시오. const int* const는 "const int를 가리키는 const 포인터"이며 값과 포인터를 모두 변경할 수 없습니다.
const 정확성이 중요한 이유
적용할 수 있는 곳마다 const를 사용하면 의도를 문서화하고 버그를 방지하며 컴파일러가 최적화할 수 있습니다. 이러한 규율을 const 정확성이라고 합니다.
const는 const 호출자를 지원합니다
const&를 받는 함수는 const 인수와 non-const 인수뿐 아니라 임시 객체도 받을 수 있습니다. non-const 참조는 임시 객체에 바인딩할 수 없습니다.
const 지역 변수로 코드 이해하기
변경되지 않아야 하는 지역 변수를 const로 선언하면 코드를 읽기 쉬워지고 실수로 다시 대입하는 일을 방지할 수 있습니다.
#include <iostream>
int main() {
const double rate = 0.2;
const double total = 100 * (1 + rate);
std::cout << total << "\n";
}값의 최상위 const
값으로 전달되는 매개변수에서 최상위 const는 호출자에게 영향을 주지 않습니다. 함수 본문만 제한하며, 선언에서는 생략하는 경우가 많습니다.
일찍 const 추가하기
나중에 const 정확성을 적용하는 것보다 처음부터 const 정확성을 지키며 작성하는 편이 훨씬 쉽습니다. 기본 습관으로 매개변수, 참조, 지역 변수에 const를 적용하십시오.
빠른 확인
const에 대한 이해도를 확인해 보십시오.
복습
변수, 매개변수, 참조, 포인터에 const를 사용하는 방법과 const를 가리키는 포인터와 const 포인터의 차이를 배웠습니다. const 정확성은 의도를 문서화하고 버그를 방지하며 임시 객체에 대한 바인딩과 최적화를 가능하게 합니다.
자주 묻는 질문
“const 변수와 매개변수” 강의는 무료인가요?
네 — “const 변수와 매개변수” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 C++ Academy 강의 전체를 잠금 해제할 수 있습니다. C++ Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“const 변수와 매개변수”에서 뭘 배우나요?
데이터가 변경되지 않도록 보호하기 브라우저에서 직접 실행하는 실습 코드로 C++ Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
C++ Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 C++ Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“const 변수와 매개변수” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 C++ Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 C++ Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- const 변수와 매개변수
- const 멤버 함수
- constexpr와 컴파일 시간
- consteval과 constinit