인프런 커뮤니티 질문&답변
10_2 [12:26] TODO 대입연산자 오버로딩
해결된 질문
작성
·
202
4
안녕하세요?
12분26초경 TODO 대입연산자 오버로딩 해봤습니다.
<코드>
// Tod : overload operator =
Position2D& operator = (const Position2D& pos_target)
{
m_x = pos_target.m_x;
m_y = pos_target.m_y;
return *this;
}
이렇게 오버로딩해주고
void moveTo(const Position2D & pos_target)
{
//m_location.set(pos_target);
m_location = pos_target;
/*m_x = x_target;
m_y = y_target;*/
}
몬스터 클래스에서 이렇게 대입해주면 되는거죠?
근데 자동으로 생성되는 디폴트 대입연산자도 있다고 하네요.
그래서 대입연산자 오버로딩 한 부분을 주석처리하니까 실행도 잘 되네요.
이전 강의에서 설명해주신 대로 동적 메모리 할당을 사용하는 경우에 멤버에 포인터가 있으니까
얕은 복사로 인해서 생길 수 있는 문제점등에 대해서 주의하면 되겠네요.
감사합니다.
<전체코드>
#pragma once
#include <iostream>
class Position2D
{
private:
int m_x;
int m_y;
public:
Position2D(const int& x_in, const int& y_in)
: m_x(x_in), m_y(y_in)
{}
// Tod : overload operator =
Position2D& operator = (const Position2D& pos_target)
{
m_x = pos_target.m_x;
m_y = pos_target.m_y;
return *this;
}
/*void set(const Position2D & pos_target)
{
set(pos_target.m_x, pos_target.m_y);
}*/
void set(const int& x_target, const int& y_target)
{
m_x = x_target;
m_y = y_target;
}
friend std::ostream& operator << (std::ostream& out, const Position2D& pos2d)
{
out << pos2d.m_x << " " << pos2d.m_y;
return out;
}
};





