3. Functions and Operators

함수와 연산자를 알아보자.

25. Take parameters appropriately by value, (smart) pointer, or reference.

잘 매개화하라. 입력, 출력, 입/출력 매개변수를 구분하고, 값과 참조자 매개변수를 구분하라. 이를 적절히 활용하라.

26. Preserve natural semantics for overloaded operators.

프로그래머들은 놀라는 일을 싫어한다. 연산자 오버로딩은 좋은 이유가 있을 때만 하고, 자연스러운 의미를 줘라. 그것이 어렵다면 연산자 오버로딩을 잘못 쓰고 있는 것이다.

27. Prefer the canonical forms of arithmetic and assignment operators.

a + b를 정의한다면 a += b도 정의해야 한다. 이진 산술 연산자를 정의하면 그 대입 연산자도 정의하라. 그래야 중복을 최소화하고 효율성을 최대화할 수 있다.

28. Prefer the canonical form of ++ and –. Prefer calling the prefix forms.

++c를 정의한다면 c++도 정의해야 한다. 증가와 감소 연산자는 까다로운데 각각은 전치, 후치 형태를 갖고 있고 약간 의미가 다르기 때문이다. operator++나 operator–는 내장 대상의 행동을 흉내내도록 정의하라. 원본 값이 필요하지 않으면 전치 형태를 호출하라.

29. Consider overloading to avoid implicit conversions.

오브젝트를 필요 이상으로 늘리지 말라. 묵시적 형변환은 문법적 편리함을 준다. 하지만 임시 오브젝트를 만드는 일이 불필요하고 최적화를 해야 할 때는 공통된 인자 타입과 매치되는 오버로드된 함수를 만들어서 형변환을 막을 수 있다.

30. Avoid overloading &&, || and , (comma).

지혜는 삼가야 할 때를 아는 것이다. 내장 &&, ||, , 연산자는 컴파일러로부터 특별한 대우를 받는다. 그것을 오버로딩하면 완전히 다른 의미를 가진 일반적인 함수가 되며 이는 미묘한 버그나 불안정성을 불러오는 확실한 길이자. 이 연산자들을 무리하게 오버로드하지 말라.

31. Don’t write code that depends on the order of evaluation of function arguments.

평가 순서를 지켜라. 함수의 인자가 평가되는 순서는 정해져 있지 않으므로 특정한 순서에 의존하지 말라.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중