둘 다 클래스의 멤버 함수와 멤버 변수에 접근한다는 의미는 동일합니다.
그러나. 연산자는 클래스 인스턴스 객체에 접근하고, ->연산자는 클래스 포인터 객체에 접근한다는 게 다릅니다.
이걸 보고 무슨 소리야 하겠지만 둘은 쓰는 용도의 차이가 명확하기 때문에 이 차이만 알면 쉽습니다.
결론은 동적 생성한 객체에 접근하려면 ->연산자, 아니면. 연산자를 쓴다고 생각하면 됩니다.
처음 프로그램을 시작할 때 미리 크기를 알 수 있으면 좋겠지만,
만약 예를 들어, 게임 플레이 중에 몬스터 나타나야 되거나 소멸되어야 하는 상황이면
프로그램 실행 중 생성되거나 소멸 되는 오브젝트들은 동적 생성하게 됩니다.
그러면 동적생성은 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 |