c++에서 template와 추상화의 차이점과 자세한 기능이 궁금합니다.
글쓴이: tlwkrgoqhfrk / 작성시간: 목, 2016/07/07 - 11:57오전
c++에서 template와 추상화의 차이점이 궁금합니다.
template는 자료형을 정해놓지 않고 가져다 쓰면서 자료형을 정하여 쓰는 것으로 알고 있습니다.
template를 쓰면 코드메모리를 좀 더 적게 사용가능 하다고 알고 있습니다. 하지만 template를 쓰면 컴파일 후 자료형이 정해지므로 속도가 느려지는 것으로 알고 있는데요.
이것 외에도 template의 기능적 측면과 장,단점이 있나요? 인터넷에 검색을 해보아도 이것 이상을 찾을 수가 없었습니다.
추상화는 정의부가 없는 가상함수를 클래스로 만들고 다른 클래스에서 가져가 정의부만 생성해 사용하는 것으로 알고있습니다.
추상화를 했을 때 이점이 어떤 것이 있나요?
한개의 큰 틀을 만들어 놓고 사용하기 때문에 메모리 측면에서는 좋을 것 같다는 것은 짐작했습니다. 다른 장점은 무엇이 있나요?
template와 추상화의 문법적 차이 말고 기능적인 부분에서 큰 차이점을 모르겠습니다. 메모리적 부분과 속도 부분에서 큰차이점이 있나요? 실무적인 관점에서 사용시 어떤 경우에 각각을 사용하나요?
Forums:
template는 자료형을 정해놓지 않고 가져다
template는 자료형을 정해놓지 않고 가져다 쓰면서 자료형을 정하여 쓰는 것으로 알고 있습니다.
-> 자료형 자체가 매개변수처럼 쓰여서 이를 바탕으로 컴파일러가 추론하여 결정합니다.
template를 쓰면 코드메모리를 좀 더 적게 사용가능 하다고 알고 있습니다.
-> 함수 오버로딩도 필요한 함수만 정의한다면 템플렛 대비 코드 메모리가 많이 들 것으로 생각되지 않습니다.
template를 쓰면 컴파일 후 자료형이 정해지므로 속도가 느려지는 것...
-> 컴파일 후가 아니고 컴파일 시 자료형이 정해지고 속도도 느려지지도 않습니다.
template와 추상화는 정적 다형성과 동적 다형성을 말씀하시는 듯 한데, 두 기법은 완전히 다른 개념입니다.
직접 코드를 작성해 보는 것이 최선!
감사합니다.
두 개념이 많이 겹친다고 생각했는데 제 공부가 부족했던 것 같습니다.
좀 더 공부하고 알아보도록 하겠습니다.
답변해주셔서 감사합니다.
...
> template를 쓰면 코드메모리를 좀 더 적게 사용가능 하다고 알고 있습니다.
아닙니다. template를 쓰면 같은 일을 하는 코드를 타입에 따라 여러 번 컴파일하게 되므로 일반적으로 코드 크기가 커집니다.
> 하지만 template를 쓰면 컴파일 후 자료형이 정해지므로 속도가 느려지는 것으로 알고 있는데요.
slee0303 님이 말씀하셨듯이 컴파일할 때 자료형이 정해지고, (제대로 짜면) 가장 빠른 속도를 낼 수 있는 방법입니다.
==========
지금 보기에는 장단점에 너무 연연하지 말고 그냥 각각을 연습해 보시는 게 나을 것 같습니다. template와 abstract class는 전혀 성질이 다른 테크닉이고, 적용할 수 있는 범위도 별로 겹치지 않습니다.
그리고 실무적인 관점에서 보면, 그런 거 안 쓰고 간단하게 짤 수 있으면 그게 최고입니다. 코드는 읽고 유지보수하기 쉬운 코드가 좋습니다.
감사합니다.
template가 가장 빠른 속도를 낼 수 있는 방법이라는 점이 놀랍습니다.
좀 더 많은 공부를 하여 스스로 알아내도록 하겠습니다.
혹시 책을 추천 해주실 수 있으신가요?
윤성우 열혈 C++ 책을 보았는데 좀 부족한 점이 있는 것 같습니다.
댓글 달기