강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

호두님의 프로필 이미지
호두

작성한 질문수

홍정모의 따라하며 배우는 C++

10.2 구성 관계

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_inconst 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_targetconst int& y_target)
    {
        m_x = x_target;
        m_y = y_target;
    }

    friend std::ostream& operator << (std::ostream& outconst Position2D& pos2d)
    {
        out << pos2d.m_x << " " << pos2d.m_y;
        return out;
    }
};

답변 1

0

홍정모님의 프로필 이미지
홍정모
지식공유자

:)

호두님의 프로필 이미지
호두

작성한 질문수

질문하기