같은편
홍익대 게임소프트웨어전공의 프로그래밍 단련 공간
같은편
깃허브 주소
https://github.com/madongchan
GitHub 아이콘
  • 분류 전체보기 (85)
    • 게임 프로그래밍 패턴 (2)
    • C# 프로그래밍 (26)
    • C++ 프로그래밍 (32)
      • 함수 (8)
      • 클래스 (22)
    • 알고리즘 공부 (2)
      • codingame 사이트 문제 (11)
    • 유니티엔진 - 게임 공부 (3)
    • 언리얼엔진 - 게임 공부 (4)
    • 쓸모 있을 수 있는 팁 (2)
    • 일상이야기 (3)

최근 댓글

태그

  • 언리얼
  • 예외 처리
  • 함수
  • 람다식
  • 언리얼엔진
  • 문제 풀이
  • queue
  • 복사 생성자
  • task
  • 비동기
  • c++
  • 스레드
  • DFS
  • 탐욕 알고리즘
  • 객체
  • 알고리즘
  • C#
  • 클래스
  • 최단 경로
  • 언리얼엔진4

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
같은편

홍익대 게임소프트웨어전공의 프로그래밍 단련 공간

.과 ->의 쓰는 용도
C++ 프로그래밍/클래스

.과 ->의 쓰는 용도

2022. 8. 4. 16:22

둘 다 클래스의 멤버 함수와 멤버 변수에 접근한다는 의미는 동일합니다.

 

그러나. 연산자는 클래스 인스턴스 객체에 접근하고, ->연산자는 클래스 포인터 객체에 접근한다는 게 다릅니다.

 

이걸 보고 무슨 소리야 하겠지만 둘은 쓰는 용도의 차이가 명확하기 때문에 이 차이만 알면 쉽습니다.

 

결론은 동적 생성한 객체에 접근하려면 ->연산자, 아니면. 연산자를 쓴다고 생각하면 됩니다.

처음 프로그램을 시작할 때 미리 크기를 알 수 있으면 좋겠지만,


만약 예를 들어, 게임 플레이 중에 몬스터 나타나야 되거나 소멸되어야 하는 상황이면


프로그램 실행 중 생성되거나 소멸 되는 오브젝트들은 동적 생성하게 됩니다.

 

그러면 동적생성은 new 연산자로 만들어지는데 new 연산자는 객체의 주소 값을 반환해줍니다.

 

그렇기 때문에 포인터 객체에 접근하기 위해 ->연산자를 쓰는 이유가 됩니다.

 

물론 이러한 무분별한 동적생성은 관리에 실패하면 메모리 누수 같은 심각한 문제가 되기 때문에

 

미리 공간을 충분히 잡고 그때그때 객체를 가져오는 방법을 쓰는것도 좋은 방법입니다.

 

이러한 대표적인 기법이 오브젝트 풀링 기법(Object pool pattern)입니다.

 

앞으로 .연산자와 ->연산자가 쓰이는 명확한 차이를 기억하고 있다가 쓰시면 됩니다.

 

저는 차이점을 명확하게 깨닫기까지 꽤 오래 걸렸답니다.ο(=•ω<=)ρ⌒☆

 

물론 다른 방법과 용도도 많으므로 공부는 끝이 없습니다.

저작자표시 비영리 변경금지 (새창열림)

'C++ 프로그래밍 > 클래스' 카테고리의 다른 글

다형성-상속에서의 형 변환  (0) 2022.08.12
상속  (0) 2022.08.08
함수의 설계와 객체의 복사  (0) 2022.07.28
얕은 복사와 깊은 복사  (0) 2022.07.28
객체의 복사와 복사 생성자  (0) 2022.07.28
    같은편
    같은편
    책을 통해 이때까지 블로그나 유튜브에서 얻었던 지식의 파편들을 정립하고 합쳐 단단한 발판으로 만들기 위한 블로그

    티스토리툴바