편집 기록

편집 기록
  • 프로필알 수 없는 사용자님의 편집
    날짜2016.06.17

    c++ 이동생성자 호출 시점에 대해 질문합니다. 호출시점인것 같은데 이동 생성자가 생성이 안되네여:(


    작성 코드는 다음과 같습니다.

    #include <iostream>
    
    using namespace std;
    
    class CMyData
    {
    public:
        CMyData(int Param):m_nData(Param)
        {
            cout << "CMyData(int)" << endl;
        }
    
        CMyData(const CMyData &rhs): m_nData(rhs.m_nData)
        {
            cout << "CMyData( const CMyData & ) " << endl;
        }
    
        CMyData(const CMyData &&rhs) : m_nData(rhs.m_nData)
        {
            cout << "CMyData(const CMyData && ) " << endl;
        }
    
        ~CMyData()
        {
           cout << "~CMyData()" << endl;
        }
    
        operator int() { return m_nData; }
    
    
        CMyData operator+(const CMyData & rhs)
        {
            CMyData result(0);
    
            result.m_nData = this->m_nData + rhs.m_nData;
    
            return result;
        }
    
        CMyData& operator=( const CMyData & rhs)
        {
            m_nData = rhs.m_nData;
    
            return *this;
        }
    
    private:
        int m_nData = 0;
    
    };
    
    int main(void)
    {
        cout << "***Begin***" << endl;
    
        CMyData a(0), b(3), c(4);
    
        a = b + c;      /// 바로 이시점에서 입니다.
    
        cout << a << endl;
    
        cout << "*** end *** " << endl;
    
        return 0;
    }
    

    b+c 연산후 a 로 대입하는 과정에서 이동생성자가 생성되어야 할것 같은데 생성이 안됩니다. 왜그런거죠??

  • 프로필허대영(Daeyoung Heo)님의 편집
    날짜2016.06.16

    c++ 이동생성자 호출 시점에 대해 질문합니다. 호출시점인것 같은데 이동 생성자가 생성이 안되네여:(


    작성 코드는 다음과 같습니다.

    #include <iostream>
    
    using namespace std;
    
    class CMyData
    {
    public:
        CMyData(int Param):m_nData(Param)
        {
            cout << "CMyData(int)" << endl;
        }
    
        CMyData(const CMyData &rhs): m_nData(rhs.m_nData)
        {
            cout << "CMyData( const CMyData & ) " << endl;
        }
    
        CMyData(const CMyData &&rhs) : m_nData(rhs.m_nData)
        {
            cout << "CMyData(const CMyData && ) " << endl;
        }
    
        ~CMyData()
        {
           cout << "~CMyData()" << endl;
        }
    
        operator int() { return m_nData; }
    
    
        CMyData operator+(const CMyData & rhs)
        {
            CMyData result(0);
    
            result.m_nData = this->m_nData + rhs.m_nData;
    
            return result;
        }
    
        CMyData& operator=( const CMyData & rhs)
        {
            m_nData = rhs.m_nData;
    
            return *this;
        }
    
    private:
        int m_nData = 0;
    
    };
    
    int main(void)
    {
        cout << "***Begin***" << endl;
    
        CMyData a(0), b(3), c(4);
    
        a = b + c;      /// 바로 이시점에서 입니다.
    
        cout << a << endl;
    
        cout << "*** end *** " << endl;
    
        return 0;
    }
    

    b+c 연산후 a 로 대입하는 과정에서 이동생성자가 생성되어야 할것 같은데 생성이 안됩니다. 왜그런거죠??

  • 프로필walli님의 편집
    날짜2016.06.15

    c++ 이동생성자 호출 시점에 대해 질문합니다. 호출시점인것 같은데 이동 생성자가 생성이 안되네여:(


    작성 코드는 다음과 같습니다.

    include

    using namespace std;

    class CMyData { public: CMyData(int Param):m_nData(Param) { cout << "CMyData(int)" << endl; }

    CMyData(const CMyData &rhs): m_nData(rhs.m_nData)
    {
        cout << "CMyData( const CMyData & ) " << endl;
    }
    
    CMyData(const CMyData &&rhs) : m_nData(rhs.m_nData)
    {
        cout << "CMyData(const CMyData && ) " << endl;
    }
    
    ~CMyData()
    {
       cout << "~CMyData()" << endl;
    }
    
    operator int() { return m_nData; }
    
    
    CMyData operator+(const CMyData & rhs)
    {
        CMyData result(0);
    
        result.m_nData = this->m_nData + rhs.m_nData;
    
        return result;
    }
    
    CMyData& operator=( const CMyData & rhs)
    {
        m_nData = rhs.m_nData;
    
        return *this;
    }
    

    private: int m_nData = 0;

    };

    int main(void) { cout << "Begin" << endl;

    CMyData a(0), b(3), c(4);
    
    a = b + c;      /// 바로 이시점에서 입니다.
    
    cout << a << endl;
    
    cout << "*** end *** " << endl;
    
    return 0;
    

    }

    b+c 연산후 a 로 대입하는 과정에서 이동생성자가 생성되어야 할것 같은데 생성이 안됩니다. 왜그런거죠??

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.