해결된 질문
작성
·
458
0
안녕하세요.
오늘 map 을 공부하던중..
pair<int,int>(i,i*100) -> 이 부분이 도대체 무슨 소리인지 모르겠더라구요.. 이름이 없어서 생성자도 아니고 operator도 아니고 1시간 구글링 결투끝에 임시객체라는 표현을 알게되었어요.
Q1
임시객체가 무엇을 반환하는지가 궁금합니다..!
코드상으로는 key 랑 value를 반환하는 것 같긴한데..
내부를 살펴볼려해도 외계어가 난무해서 물어봅니다
ㅠㅠ
제가 너무 깊게 알려는건지 아니면 기초지식이 부족한건지 잘모르겠네요 하하..
답변 2
1
... (생략)
pair는 단순하게 struct이고 key, value 형태를 템플릿으로 받게 되어 있습니다.
직접 구현한다면 위와 같은 느낌인 것이죠.
C++에서 struct와 class는 거~의 차이가 없습니다.
struct로 객체를 만들 수 있는데, 그 객체 생성자를 통해
key는 i, value는 i*100을 넣어준 상태인 것이죠.
임시 객체란 말 그대로 임시로 사용하다 사용하는 객체,
즉 변수를 통하지 않고 넘긴 것을 의미하는데요.요렇게 만들어도 동일하겠지만 굳이 불필요하게 p라는 지역 변수를 사용할 필요는 없겠죠?
그래서 한 번에 insert(pair<int, int>(10, 100)) 형태로 사용하게 되는 것이고
임시 객체를 사용하면 최적화에도 도움이 됩니다. (이동 연산이 가능해서)
0
강사님이 전에 언급하셨듯이 구조체랑 클래스랑 사실 다를게 없고 굳이 다른점은 기본 접근지정자가 public이냐 private 이냐 차이밖에 없습니다. 그래서 구조체로 선언하든 클래스로 선언하든 다 객체에요 (클래스=객체가 아니라 클래스를 이용해 데이터를 선언하면 객체가 되는거죠)
덧붙여서 몇몇 책에서는 그냥 변수도 객체라고 하는 경우도 있어요. 타입을 이용해 메모리에 실체화하는것이 객체라면, 구조체를 이용하든 클래스를 이용하든 기본타입을 이용하든 다 객체인거죠
감사합니다 도움이 되었어요!