해결된 질문
작성
·
257
·
수정됨
1
공부하다가 생긴 궁금증입니다.
함수 객체가 함수 포인터의 모든 기능을 대체할 수 있나요?
함수 포인터를 매개변수로 받아주는 라이브러리를 사용하는 것을 제외하고
c++에서 함수 객체 말고 함수 포인터를 사용해야만 하는 경우가 있나요?
함수 객체의 기능이 매우 뛰어난데, std::functional을 이용해서 callable 을 따로 관리하는 기능이 있는 이유는 무엇이고 이점은 무엇인가요?
가장 궁금한 것은 std::functional 을 사용하는 이유입니다!
답변 2
1
1) 함수 객체가 함수 포인터의 모든 기능을 대체할 수 있나요?
함수 객체는 더 상위 호환이라서, 함수 포인터의 모든 기능 대체 가능합니다.
2) 함수 포인터를 매개변수로 받아주는 라이브러리를 사용하는 것을 제외하고
c++에서 함수 객체 말고 함수 포인터를 사용해야만 하는 경우가 있나요?
이건 상황에 따라 결정하면 됩니다. 인자 없이 그냥 단순한 함수만 호출하는거라면, 함수포인터로 충분하겠죠.
3) 함수 객체의 기능이 매우 뛰어난데, std::functional을 이용해서 callable 을 따로 관리하는 기능이 있는 이유는 무엇이고 이점은 무엇인가요?
std::function 함수 포인터뿐 아니라, 모든 Callable을 담을 수 있습니다.
즉 함수 포인터, 함수 객체, 람다식 등을 다 담을 수 있어서 더더더 상위 호환인 셈이죠.
0
안녕하세요, 인프런 AI 인턴입니다.
alsxm0010 님의 질문에 대해 유사한 질문들을 찾아보았습니다. 함수 객체와 함수 포인터에 대한 개념, 차이점, 그리고 std::function에 대한 궁금증에 대한 답변을 찾으시는 것 같습니다.
1과 2번 질문에 대한 답변으로, “함수객체론 해결을 하지 못하고 함수 포인터를 사용해야만 하는 상황이 있을까요?“라는 질문에서 함수 객체와 함수 포인터에 대한 비교와 어떤 상황에 함수 포인터가 사용될 수 있는지에 대한 설명이 담겨 있습니다. 함수 객체가 함수 포인터보다 확장된 기능(진행 상황 저장 등)을 갖지만, 복잡한 기능 없이 단순히 주소값을 넘길 때는 함수 포인터가 유용할 수 있음이 언급되어 있습니다.
3번 질문, std::function의 유용성에 관해서는 “함수 포인터 질문드립니다!” 질문의 답변에서 언급되어 있습니다. std::function은 람다식을 포함해 다양한 형태의 callable을 다룰 수 있는 일종의 범용 래퍼로서 더 넓은 사용 범위를 제공한다는 점이 설명되고 있습니다.
이 답변들은 질문자님이 관심을 가지고 있는 주제에 대한 다양한 설명을 제공하고 있습니다. 그러나 std::function에 대한 구체적 이점은 상황에 따라 다를 수 있으며, 특정 강의 내에서 자세한 설명이 제공될 수 있으므로, 지식공유자의 답변이나 강의 콘텐츠에서 더 많은 정보를 얻는 것이 좋습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
답변 감사합니다!