코드카타 문제풀이 / Const 참조
void printName(const string* name);
*name이 가리키는 문자열을 읽기만 하고, 바꾸지는 않는다는 뜻.
💬 원본 객체를 복사하지 않아서 속도 빠름
값 전달(원본)로 넘기면 내부적으로 복사 발생 → 특히 큰 객체면 부담 매우 커짐
포인터로 넘기면 복사 없이 바로 접근 → 성능 향상↑
🔒 const 덕분에 원본이 실수로 바뀌는 걸 방지
실수로 데이터를 수정하면 버그나 보안 문제 발생 가능
→ const는 “이 함수는 진짜 읽기 전용이다” 라는 명시적인 약속.
👀 코드 가독성 & 의도 전달력 ↑
함수 선언만 봐도 “이 값은 절대 안 바꾼다”는 걸 알 수 있음
→ 유지보수, 협업, 코드 리뷰 시 신뢰도 ↑
| 상황 | 추천 방식 |
|---|---|
| 데이터 크기가 크고, 수정하지 않을 때 | const Type* ptr |
| 클래스 내부 읽기 함수 | const Type& / const Type* |
| 배열, 버퍼 등 raw 메모리 | const T* buffer, size_t len |
void printLength(const string* str) {
cout << "Length: " << str->length() << endl;
// str->append("hello"); ❌ 에러! const라서 수정 불가
}