2025/03/29 3

포톤 서버를 이용한 채팅 서버 제작

GitHub : https://github.com/kwon1232/HDProject 📦 ChatManager — 네트워크 채팅 관리 Photon Chat 서버와 직접 통신하고 네트워크 이벤트를 처리하는 관리자 주요 역할Photon 서버 연결 및 인증채팅 채널 구독 / 메시지 송신채널 내의 메시지 수신 및 UI로 전달Photon 채팅 관련 콜백들 처리구조 ChatManager static ChatManager instance ➤ 싱글톤 ChatClient chatClient ➤ Photon 채팅 클라이언트 string chatChannel ➤ 사용할 채널명 ("GlobalChannel") SendMessageToChat() ➤ 채널로 메시지 전송 OnCon..

포인터를 사용하는 이유 토막 정리

포인터를 왜 쓰는지 알면언제 써야할지 명확하게 알고 쓸 수 있다1. 포인터 변수에 함수 주소를 저장하고 이를 호출해 상황에 따라 다르게 작동하는 코드를 만들 수 있다거나ex) 함수 포인터, 델리게이트 등2. 크기가 큰 구조체나 클래스를 매개변수로 넘겨줄 때 값 복사로 넘겨주면 상당히 무거운 작업이 되므로 이에 대한 참조(주소)만 넘겨준다던가ex) const & 같이 넘겨주는 경우3. 동적 할당한 메모리를 포인터로 가리킬 수 있다거나ex) 동적 할당 메모리 관리1,3번의 활용상속구조를 이용해서 버추얼테이블을 효율적으로 활용하는 캐스팅2번으로 상속구조 클래스 내부의 함수 얕은 참조로 경량화 가능

복제와 대입 처리하기

복제 생성자나 대입 연산자를 직접 정의하지 않으면컴파일러가 자동으로 만들어준다.이렇게 컴파일러에서 생성된 메서드는객체 타입 데이터 멤버에 대해복제 생성자와 대입 연산자를 재귀적으로 호출한다.하지만 int, double, 포인터와 같은 기본 타입에 대해서는비트 단위 복제(=bitwise copy) (또는 얕은 복제 (=shallow copy))나 대입이 적용된다.+++ Plus +++bitwise copy, shallow copy 에서는원본과 복사된 내용이 모두 메모리에 있는동일한 객체를 참조한다.+++++++++++즉, 원본 객체의 데이터 멤버를 대상 객체로단순히 복제하거나 대입만 한다.복제 생성자와 대입 연산자 정의해주기그런데 객체에 동적으로 할당한 메모리가 있으면 문제가 발생한다.이러한 문제는s라는 ..