{
C++ 에서도 가변 인자가 필요한 경우가 있긴 있다. 하지만 C++ 높은 수준의 구조체나 boost 라이브러리 등을 이용하면 굳이 사용하지 않아도 된다.
그렇다면 왜 사용하지 말아야 하는가?
그 이유는 타입 안전성에 약하다. 일단 가변 인자는 타입 안전성 검사를 모두 중단하는 것이다. 그리고 프로그래머가 그 가변 인자를 관리해 주어야 한다. 역시 귀찮은 작업이다. 그리고 클래스 타입의 개체에 대한 결과는 예상하기 힘들다. .. 가변인자를 클래스의 개체를 넣는다면 .. 정말 그 결과를 예상하기 힘들다. 마지막으로 인자의 갯수를 아는 방법이 없다.
하지만 sprintf 등의 함수류에서 무척 간편하게 사용하기도 하고, 로그를 남길 때라든지 무척 편하다는 장점이 있다.
자, 선택은 자신의 몫! 아 그리고 boost::format 라이브러리를 사용하면 좀 편해진다. : ) 물론 가변인자가 편해지는게 아니라, 가변인자를 빈번히 사용하는 sprintf 류를 boost::format 으로 대체할 수 있다는 것이다.
아래 샘플 코드를 보면 쉽게 이해가 갈 것이다. 이 코드는 boost에서 가져 왔다.
}
최근댓글