언어/C++

[C++] 상수 멤버 함수 (함수 뒤에 const)

study_memo 2023. 10. 6. 03:04

상수 멤버 함수란?

상수 멤버 함수란 자신이 호출하는 객체를 수정하지 않는 읽기 전용 함수를 의미한다.

멤버 함수 원형의 맨 마지막에 const 키워드를 추가하면, 멤버 함수를 상수 멤버 함수로 정의할 수 있다.

(반환형) (함수이름)(함수인자) const { 구현 } 이런 식으로 인자와 구현 사이에 const 키워드를 넣는다.

//밑에 전체 코드 있으니, 자세한 설명은 밑으로~

class Point
{
public:
    int x, y;
    void print() const { cout << x << ", " << y << endl;}       // print() 는 x, y를 변경시키지 않는다.
    void set(int x, int y) const {this->x = x; this->y = y;}  // error 발생. x, y가 변한다.
};

 

상수 멤버 함수는 왜 쓸까?

-> 상수 객체는 상수 함수만 부를 수 있기 때문이다. 

#include <iostream>
using namespace std;
 
class Point
{
public:
    int x, y;
    void print() const { cout << x << ", " << y << endl;}       // print() 는 x, y를 변경시키지 않는다.
    
    void set(int x, int y) {this->x = x; this->y = y;}// error발생 
    //(이유: x, y가 변하면 안되는데 값을 바꾸고 있기 때문이다.)
};
 
int main() 
{
    const Point p1{1, 2}; //const가 붙었으므로 상수 객체 
    p1.print();     // OK
    p1.set(3, 4);   // ERROR 발생
 
    return 0;
}