상수 멤버 함수란?
상수 멤버 함수란 자신이 호출하는 객체를 수정하지 않는 읽기 전용 함수를 의미한다.
멤버 함수 원형의 맨 마지막에 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;
}
'언어 > C++' 카테고리의 다른 글
[C++] vector 초기화 (1차원, 2차원) (0) | 2024.01.24 |
---|---|
[C++] Queue STL (0) | 2024.01.23 |
[C++] 연산자 오버로딩 (이항연산자의 매개변수가 하나인 이유) (0) | 2023.10.06 |
[C++] for each문 ->참조 변수 언제 사용? (feat.깊은 복사, 얕은복사) (+ cin.fail) 예제 (0) | 2023.09.30 |
[C++] locale이란? (0) | 2023.09.29 |