항목 9 : 똑같은 코드? ( 난이도 : 5 )
함수 매개변수를 후위증가 시키는것과 같은 간단한 코드 차이도 결과에 큰 영향을 미칠수 있다는 것을 보여 주는 항목이다. ... 바로 질문 넘어가자. 1. 다음 코드가 하는 일을 설명하라. f( a++ ); f의 경우 1. f가 함수 일 경우, 내부적으로 a의 타입에 맞는 복사 생성자가 호출되어, a와 똑같은 임시객체가 생성되고, 자신을 증가시킨 후, 임시객체를 a++ 자리에 올려 두고 f()에 전달한다. 또한 표준에 의하여, 임시객체를 non-const 로 받을수 없기 때문에 f는 const reference나 복사 생성자를 이용하여 전달해야만 할 것이다. 2. f가 매크로 함수(#define 함수)라면, 경우에 따라서 a가 여러번 호출 될 수 있다는 점이다. 3. f가 객체라면, 1번과 마찬가지 4. ..
책 정리/More Exceptional C++
2008. 12. 23. 12:18
최근댓글