• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

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

23.02.07 17:21 작성 23.02.07 17:24 수정 조회수 236

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

강민철님의 프로필

강민철

2023.02.08

네, 맞습니다 :)

김범준님의 프로필

김범준

질문자

2023.02.08

감사합니다!