함수 선언의 decl-specifier-seq에 키워드 auto가 포함 된 경우 후행 반환 형식은 생략될 수 있으며 return 문에 사용된 식의 형식에서 컴파일러에서 추론됩니다. 반환 형식에서 decltype(auto)을 사용하지 않는 경우 공제는 템플릿 인수 공제 규칙을 따릅니다. 매개 변수 형식은 이러한 형식의 다중 수준 포인터/배열또는 이러한 형식인 함수에 대한 포인터를 포함하여 알 수 없는 바인딩배열에 대한 참조 또는 포인터를 포함하는 형식일 수 없습니다. 함수는 프로그램에 모듈성을 제공하는 데 사용됩니다. 함수를 사용하여 응용 프로그램을 만들면 오류를 쉽게 이해하고 편집하고 검사할 수 있습니다. 함수의 삭제된 정의는 번역 단위의 첫 번째 선언이어야 합니다: 이전에 선언된 함수를 삭제된 것으로 다시 선언할 수 없습니다: 다음 예제에서는 myFunction(이 함수)가 호출될 때 텍스트(작업)를 인쇄하는 데 사용됩니다. 선언은 컴파일러에게 함수의 존재에 대해 알리기 위해 수행됩니다. 함수의 반환 형식, 이름 및 매개 변수 목록이 언급됩니다. 함수 본문은 정의로 작성됩니다. 예제의 도움으로 이것을 이해할 수 있습니다. 프로그램이 함수를 호출하면 프로그램 컨트롤이 호출된 함수로 전송됩니다.

호출된 함수는 정의된 작업을 수행하고 return 문이 실행되거나 함수 종료 닫는 중괄호에 도달하면 프로그램 제어를 기본 프로그램으로 반환합니다. 이 경우 실제 변수 x는 값으로 인수를 전달하기 때문에 변경되지 않으므로 x의 복사본이 전달되고 변경되고 함수가 끝날 때 복사 된 값이 소멸됩니다(범위를 벗어남). 따라서 main() 내부의 변수 x에는 여전히 값 10이 있습니다. 반환 형식 공제를 사용하는 함수 템플릿의 전문화는 반환 형식 자리 표시자를 사용해야 하며 가상 함수는 반환 형식 공제를 사용할 수 없습니다. 함수는 메서드 또는 하위 루틴 또는 프로시저 등과 같은 다양한 이름으로 알려져 있습니다. 함수는 함께 작업을 수행하는 문 그룹입니다. 모든 C++ 프로그램에는 main()인 하나 이상의 함수가 있으며, 가장 사소한 모든 프로그램은 추가 함수를 정의할 수 있습니다.