강의

멘토링

커뮤니티

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

김범준님의 프로필 이미지
김범준

작성한 질문수

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

15.3 이동 생성자와 이동 대입

제가 이해한것 정리해봅니다 맞는지 확인 부탁드려요

작성

·

339

·

수정됨

0

	Resource &operator = (Resource& res)	// '='연산자 오버로딩 함수 (반환값이 Resource, 이고 &는 왜 붙는지 모르겠음 '='를 써주는 것처럼 하나의 약속인가요?)
	{
		std::cout << "Resource copy assignment" << std::endl;

		if (&res == this) return *this;		//파라미터로 들어온 객체와 &operator함수를 실행중인 객체가 같은가?

		if (this->m_data != nullptr) delete[] m_data;	//다르다면 현재 함수를 실행중인 객체의 m_data가 있으면 비워주고

		m_length = res.m_length;		//자신의 m_length에 파라미터로 들어온 객체의 m_length로 채워주고
		m_data = new int[m_length];		//자신의 m_data의 메모리를 m_length만큼 동적할당해준 뒤

		for (unsigned i = 0; i < m_length; ++i)			
			m_data[i] = res.m_data[i];	//자신의 m_data에 파라미터로 들어온 객체의 m_data를 복사해서 넣는다.

		return *this;	//이 함수가 종료되면 나 자신의 객체의 주소를 반환한다.	반환값이 Resource클래스인데 어떻게 포인터로 가능하죠?
	}

답변 1

1

네, 맞습니다 :)

김범준님의 프로필 이미지
김범준
질문자

감사합니다!

김범준님의 프로필 이미지
김범준

작성한 질문수

질문하기