내 DirectX Graphics 클래스를 사용하여 서페이스를 만들고 스프라이트를 그릴 수있는 플레이어 클래스가 있습니다.클래스 멤버에 포인터 클래스 인수를 복사 할 때의 이점은 무엇입니까?
나는 플레이어 클래스 methodlike이 포인터로 그래픽 클래스를 통과 오전 : 내 초기화 방법은 다른 포인터 방법에 대한 포인터를 전달
**game.cpp**
m_pPlayer->Init(Graphics* graphics);
플레이어 클래스 내부. 플레이어 클래스에 다른 그래픽 포인터를 만들고 대신 포인터 인수를 복사하면 어떤 이점이 있습니까?
그래서이 대
**player.cpp**
m_pSurface->Init(graphics, m_width, m_height);
:
**player.cpp**
m_pGraphics = graphics;
m_pSurface->Init(m_pGraphics, m_width, m_height);
나는 m_pGraphics 포인터를 갖는 날 같은 클래스에 다시 포인터를 재사용 할 수 있음을 알고 같은 내 그리기 방법하지만 같은 어쨌든 플레이어 클래스의 메서드를 호출하면 포인터를 계속 반복해서 전달할 수 없습니까?
예, 그냥 전달할 수 있습니다. 복사가 더 느리고 더 많은 메모리와 코드가 필요하므로 필요하지 않은 경우 ... – deviantfan
이 두 코드 단편은 절대적으로 동일합니다. 하나를 다른 것보다 선호하는 이유가 없습니다. 포인터 복사는 매우 저렴하며 어쨌든 최적화 할 수 있습니다. 아마 당신은'그래픽'과'그래픽'을 혼동하고있을 것입니다. 후자는 복사해서는 안됩니다 (아마 어쨌든 허용되지 않을 것입니다). –
Offtopic. 클래스 디자인의 문제. 아마도 플레이어 클래스에 "서피스"또는 "그래픽"에 대한 모든 지식을 포함시키지 않기를 원할 것입니다. 그리고 아마도 "Init"메소드 대신에 생성자를 사용하고 싶을 것입니다. 원시 포인터와 포인터를 일반적으로 사용하는 것도 다시 고려해야합니다. – Drop