C++의 Const 멤버 함수
이 기사는 C++에서 상수 멤버 함수의 사용에 관한 것입니다. 객체, 변수 또는 함수를 상수로 만들기 위해 const
키워드를 사용합니다.
다른 변수나 객체와 마찬가지로 클래스의 멤버 함수도 const
로 만들 수 있습니다. 이러한 기능에 대한 특정 규칙과 규정은 이 기사에서 논의될 것입니다.
C++의 Const
멤버 함수
Const
는 데이터가 읽기 전용임을 나타내는 데이터 유형과 함께 사용되는 키워드인 유형 한정자입니다. 상수를 선언하는 데 사용할 수 있지만 Const
는 유형의 일부라는 점에서 다른 언어의 유사한 구성과 다르므로 포인터, 참조, 복합 데이터 유형 및 유형 검사와 짝을 이룰 때 복잡한 동작이 있습니다.
Const
멤버 함수는 프로그램에서 상수로 선언됩니다. 이러한 함수에서 참조하는 개체는 변경할 수 없습니다.
의도하지 않은 개체 변경을 방지하려면 const
키워드를 사용하는 것이 좋습니다. 모든 개체는 const
멤버 함수를 호출할 수 있습니다.
non-const
개체만 non-const
기능을 호출할 수 있습니다. 클래스의 개체를 const
개체로 선언하면 const
멤버 함수만 호출할 수 있는 반면 non-const
개체는 모든 멤버 함수 const
또는 non-const
를 호출할 수 있습니다.
const
함수를 만드는 구문은 다음과 같습니다.
return -datatype function_name() const;
아래의 예를 고려하십시오.
#include <iostream>
using namespace std;
class Data {
int val;
public:
Data(int a = 0) { val = a; }
int getValue() const { return val; }
};
int main() {
Data d(10);
cout << d.getValue();
return 0;
}
이 코드 세그먼트에서 생성자와 멤버 함수 getValue()
를 사용하여 Data
클래스를 선언했습니다. 이 함수는 const
함수이므로 데이터 멤버의 값을 변경할 수 없습니다.
데이터 멤버의 데이터를 수정하는 경우 컴파일러는 오류를 생성합니다. 이 함수의 this
포인터는 const
멤버 함수에 제공된 const
개체에 대한 포인터입니다.
이렇게 하면 포인터를 사용하여 개체의 데이터 멤버를 수정할 수 없습니다. 상수 메서드라고 하는 개체의 데이터 멤버를 수정하려는 모든 노력과 해당 개체에 대한 비 const
멤버 함수를 호출하려는 모든 시도는 구문 오류를 발생시킵니다.
상수 멤버 함수에는 상수가 아닌 버전이 오버로드될 수 있습니다. 컴파일러는 const
개체 또는 non-const
개체에 의해 호출되는지 여부에 따라 사용할 버전을 결정합니다.
Const
생성자와 소멸자는 선언할 수 없습니다. 개체 자체가 일정하더라도 항상 데이터 멤버를 변경할 수 있습니다.
정적 멤버 함수는 const
로 정의할 수 없습니다. const
키워드는 멤버 함수에 제공되는 this
포인터 참조에 영향을 주지만 정적 멤버 함수는 개체 없이 호출할 수 있으므로 참조가 없습니다.
함수가 클래스 변수에 쓰지 못하도록 하는 const
함수 제한을 완화하는 것도 가능합니다. 이러한 클래스 변수는 mutable
키워드로 표시되어 함수가 const
기능으로 표시된 경우에도 쓰기 가능하도록 허용합니다.
클래스 변수가 mutable
로 표시되고 const
함수가 이에 쓰는 경우 코드가 올바르게 컴파일되고 변수를 변경할 수 있습니다(C++11).
C++ 문에서 const
키워드의 배치를 변경하는 것은 const
키워드로 작업할 때 일반적으로 그렇듯이 완전히 다른 의미를 갖습니다. 앞의 const
사용법은 const
가 괄호 뒤의 함수 선언 끝에 배치되는 경우에만 적용됩니다.
Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.
LinkedIn