게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
배열과 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를 받아야 하지만 []를 오버라이딩 해서 
어떻게 두개의 리턴값을 얻을지 도저히 구상이 안됩니다.

클래스를 리턴값으로 하여 '=' 오버라이딩의 인자를 그 클래스로 하는 방법도 생각해보았으나
그렇게하게되면 정상적인 배열을 사용함에 있어서도 문제가 발생하게 되므로 취소했습니다.

아 도저히 생각나지 않습니다.

해결해주실 능력자는 없습니까? ㅜㅜ
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호