728x90
반응형
C++
클래스에서 멤버 함수(member function
) 선언 시const
의 존재 여부는 함수의 동작과 호출 가능 범위를 결정짓는 중요한 요소입니다.- 특히
const
멤버 함수 는 객체의 상태를 변경하지 않는 함수임을 보장 하며,const
객체에서도 호출할 수 있습니다. - 반면
const
가 없는 멤버 함수는 객체 상태를 변경할 수 있고,const
객체에서는 호출할 수 없습니다.
- 아래의 예제를 통해 차이를 자세히 살펴보겠습니다.
-
cpp
#include <iostream> class SpreadsheetCell { public: void setValue(double inValue); double getValue() const; // const 멤버 함수 double getValue(); // 비-const 멤버 함수 private: double mValue; }; void SpreadsheetCell::setValue(double inValue) { mValue = inValue; } // const 멤버 함수: 멤버 변수를 수정할 수 없음 double SpreadsheetCell::getValue() const { // mValue = 10.0; // 이렇게 작성하면 컴파일 오류 발생 return mValue; } // 비-const 멤버 함수: 멤버 변수 수정 가능 double SpreadsheetCell::getValue() { mValue = 10.0; // 수정 가능 return mValue; } int main() { SpreadsheetCell cell; cell.setValue(5.5); std::cout << "getValue() 호출 결과 (비-const): " << cell.getValue() << std::endl; const SpreadsheetCell constCell; // constCell.setValue(3.3); // const 객체에서는 setValue 호출 불가능 // constCell.getValue(); // const 멤버 함수만 호출 가능 }
-
함수 선언 형태 특징 double getValue() const;
- 멤버 변수를 변경하지 않겠다는 약속
-const
객체에서도 호출 가능
- 내부에서 멤버 변수 변경 시 컴파일 오류 발생double getValue();
- 멤버 변수를 변경할 수도 있음
-const
객체에서는 호출 불가능
const
멤버 함수는 클래스의 불변성을 지키고, 안정적인 함수 호출을 위해 반드시 필요한 요소입니다.const
를 올바르게 사용하면 코드의 의도가 명확해지고, 실수로 인한 멤버 변수 변경을 방지할 수 있습니다.- 따라서 "이 함수는 객체의 상태를 절대 바꾸지 않는다" 라고 생각되는 함수에는
const
를 붙이는 습관을 가지는 것이 좋습니다.
- 도움이 되셨으면 하단의 ❤️ 공감 버튼 부탁 드립니다. 감사합니다! 😄
728x90
반응형
'C C++' 카테고리의 다른 글
C++ 멤버 변수(member variable)와 멤버 함수 매개변수(member function parameter) 이름 충돌 문제 (0) | 2025.03.20 |
---|---|
C++ float/double 특수값과 std::to_string() 처리 방식 (0) | 2025.03.20 |
Visual C++ 메모리 누수(momory leaking) 탐지 방안 (0) | 2025.03.20 |
std::enable_shared_from_this — 객체 내부에서 안전하게 shared_ptr을 생성하는 방법 (0) | 2025.03.20 |
Modern C++에서 unique_ptr 반환 시 암시적 이동(Implicit Move)과 RVO(Return Value Optimization) 이해 (0) | 2025.03.20 |