함수는 이름, 매개변수, 반환 타입을 가진 작업 단위다. 호출자는 구현 대신 그 계약을 본다.
값과 참조로 넘기기
작은 타입은 값으로 넘긴다. 복사 비용이 큰 객체는 `const` 참조로 넘긴다. 함수가 호출자의 객체를 고쳐야 하면 비const 참조를 받는다.
int clamp(int v, int lo, int hi) {
if (v < lo) return lo;
if (v > hi) return hi;
return v;
}
void add_move(std::vector<int>& moves, int ply) {
moves.push_back(ply);
}기본 인자와 반환
기본 인자는 선언 한곳에만 적는다. 헤더와 구현에 둘 다 적으면 중복이다. 값을 돌려줄 수 없을 때 특별한 정수를 반환하기보다, 나중 편에서 볼 `std::optional`이나 예외 중 프로젝트의 방식을 하나로 고른다.
함수는 한 가지 일을 하게 자른다. 이름이 `process`처럼 아무 일도 가리키지 않으면, 본문을 읽기 전에 이미 계약을 잃은 것이다.
댓글
0개아직 댓글이 없습니다.