[Basic C++] #5_메서드 종류, static 메서드, const 메서드
C++ 클래스 내부에서 사용되는 메서드의 종류에 대해서 알아보겠습니다.
"전문가를 위한 C"의 8 항목, "클래스와 객체 마스터하기"의 내용입니다.
#0. static 메서드
class A
{
public:
...
private:
static std::string DoubleToString(double val);
static double StringToDouble(const std::string& str);
};
데이터 멤버와 마찬가지로 메서드 또한 특정 클래스의 모든 객체에 공통적으로 적용되어야 할 경우 "static" 키워드와 함께 선언합니다. "static" 메서드의 경우, 구현 부분에서 "static" 키워드를 적을 필요가 없습니다. "static" 메서드를 작성할 때 주의해야 할 점은, 데이터 멤버와 다르게 "static"과 "const" 키워드를 동시에 적용하는 것이 불가능합니다. 추가적으로, "static" 메서드는 특정 객체에 묶이지 않으므로, "this" 포인터 사용도 불가능합니다.
#1. const 메서드
class A
{
public:
double getVal() const;
const std::string& getStr() const;
...
};
메서드에 "const" 키워드를 붙이는 이유는 간단합니다. 해당 메서드가 데이터 멤버의 값을 변경하지 않을 것이라는 보증을 해줍니다. 해당 메서드 내부에서 접근하는 모든 데이터 멤버들을 "const"로 취급하는 특징이 있습니다. 추가적으로, 일반 객체의 경우 "const" 여부와 상관없이 모든 메서드를 호출할 수 있지만, "const"객체의 경우, "const" 메서드만 호출이 가능합니다.
#2. mutable 데이터 멤버
class A
{
private:
double val;
std::string str;
mutable int num = 0; // mutable로 선언된 integer 변수
};
상수 멤버 함수(=const 메서드)는 두 가지 주요 개념을 기반으로 합니다. 하나는 물리적 상수성, 다른 하나는 논리적 상수 성입니다. 자세한 내용은 아래 링크를 참조해 주세요. 어떠한 데이터 멤버가 논리적 상수 성을 만족할 경우, 상수 멤버 함수를 통해 해당 데이터 멤버를 조작 가능하도록, "mutable" 키워드를 통해 데이터 멤버를 선언합니다.
'언어 > Basic C++' 카테고리의 다른 글
[Basic C++] #7 클래스 상속 활용 방법 (0) | 2022.03.10 |
---|---|
[Basic C++] #6_오버라이딩과 오버로딩의 차이점 (0) | 2022.03.07 |
[Basic C++] #4 데이터 멤버의 종류, static, const (0) | 2022.03.07 |
[Basic C++] #3_얕은 복제, 깊은 복제 (0) | 2022.03.06 |
[Basic C++] #2 C 스타일의 문자열, char*, const char* (0) | 2022.02.27 |