멤버함수의 const 위치에 따른 차이점
#include <iostream>
using namespace std;
class Vector
{
public:
float x;
float y;
float z;
Vector operator-()
{
return Vector{ -x,-y,-z };
}
const Vector operator+(const Vector& v) const
{
return Vector{ x + v.x, y + v.y, z + v.z };
}
void print()
{
cout << "x : " << x << " y : " << y << " z : " << z << endl;
}
};
int main()
{
Vector v0{ 0, 1, 2 };
Vector v1{ 1, 2, 3 };
Vector v2 = v0 + v1;
Vector v3 = -v1;
v0.print();
v1.print();
v2.print();
v3.print();
}
위 코드 내에서 Vector 클래스 내의 operator+는 다음과 같은 형식을 띄고 있다.
const Vector operator+(const Vector& v) const
1. 앞의 const
리턴값을 읽기 전용으로 사용하겠다는 의미.
즉, 참조를 하여 값 변형을 막겠다는 의미이다.
2. 매개변수의 const
참조하는 매개변수의 값을 변형하지 않겠다는 의미.
- 뒤의 const
기본적으로 매개함수는 암묵적으로 this를 참조한다.
void print()
는
void print(Person* this)
와 같다는 의미이다.
여기서 뒤에 const를 붙히면
void print(const Person* this)
와 같게 된다.
쉽게 말해서 이 함수를 통하여 멤버 변수의 값을 변형하지 않겠다는 의미.
Author And Source
이 문제에 관하여(멤버함수의 const 위치에 따른 차이점), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hksdods/멤버함수의-const-위치에-따른-차이점저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)