메뉴 바로가기 검색 및 카테고리 바로가기

한빛미디어

뇌를 자극하는 C++ 프로그래밍

뇌를 자극하는 C++ 프로그래밍 질의응답 게시판입니다.

지정된게시판이없다고하여 수정 버튼을이용해서 올립니다

2008-03-08

|

by

2707

//안녕하세요 무언가를 잘못해서 지정된 게시판이 없다고하면서 글이 날아가서
//복사할 준비하고 다시 올립니다 ㅠ.ㅠ


첫번째 시도로 했을때 런다임에러가 나서 생성자를 호출하면서 뭔가 문제가 생겼다싶어서
생성자를 호출하지않고 임시로 객체를 생성하는 방법을 사용하기위해 두번째 방법을사용해봤습니다

두번째 방법을 쓰면 프로그램은 원할히 돌아가지만 m_Card[0]카드를 조작하게되고 임시객체를
생성하는것도 아니므로 다시 세번쨰 방법을 써봤습니다

세번째 방법을 쓴 이유는 생성자를 호출하지않고 클래스의 포인터로 접근하겠다는 의도였는데
결과적으로 new로 동적할당하면서 생성자가 호출되었습니다
하지만 예상과 다르게 이방법을 쓰니 프로그램이 에러없이 잘 돌아갔습니다
그런 이유를  알고싶습니다

void CCajinoControl::Shuffle()
{
        int                i, Dest, Sour;

                //첫번째시도
                       CCard TempCard; //임시 객체를 만든다
        //두번째시도
        //CCard &        TempCard = m_Card[0];
                //세번째시도
        CCard * TempCard = new CCard; //임시 객체를 만든다

        
        
        for(i = 0; i < 100; i++)
        {
                Dest = rand() % CARDMAX;
                Sour = rand() % CARDMAX;

                *TempCard         = m_Card[Dest];
                m_Card[Dest] = m_Card[Sour];
                m_Card[Sour] = *TempCard;
        }
        //이게 의미가있는가..
        TempCard = NULL;
        delete TempCard;
}

물론 단편적인 소스만 보고 상황을 짐작하는것은 힘드실거라고 생각합니다
만약에 저자님께서 저소스로는 무슨말인지 아실수없다고 하시면
눈이 어지러우시겠지만 제가 짠 소스를 보내드리겠습니다
댓글 입력