드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
배열과 operator, 깊은복사에 대한 고민...
게시물ID : computer_46559짧은주소 복사하기
작성자 : 킴키리★
추천 : 0
조회수 : 363회
댓글수 : 20개
등록시간 : 2012/05/10 13:38:50
int main(){
int* arr1;
int* arr2;
arr1=new int[5];
arr1[1]=1;
arr2=arr1;
// arr2=arr[1];
delete[] arr1;//여기서부터 문제가 발생.
cout<<arr1[1];
return 0;
}
위 문장에서 arr2=arr1 즉 포인터주소를 가져오는데
arr1이 소멸되면 arr2에서 참조할 값이 없어지는 문제가 있습니다.
때문에 operator= 를 써서 깊은복사를 할수있도록 함수를 짜고싶은데요.
제가 원하는 방식은 이런것입니다.
arr2=arr1[5] // int* = int*[index] C에서는 배열의 길이를 검사할수 없으므로 index를 넣어줌.
arr2에서는 new로 새로 할당받은 메모리의 주소가 저장되고 arr1의 내용을 복사.
도저히 구현의 방법이 생각나지않습니다.
'=' 연산자의 인자로 arr1의 주소와, index를 받아야 하지만 []를 오버라이딩 해서
어떻게 두개의 리턴값을 얻을지 도저히 구상이 안됩니다.
클래스를 리턴값으로 하여 '=' 오버라이딩의 인자를 그 클래스로 하는 방법도 생각해보았으나
그렇게하게되면 정상적인 배열을 사용함에 있어서도 문제가 발생하게 되므로 취소했습니다.
아 도저히 생각나지 않습니다.
해결해주실 능력자는 없습니까? ㅜㅜ
댓글 분란 또는 분쟁 때문에
전체 댓글이 블라인드 처리되었습니다.
새로운 댓글이 없습니다.