함수

모든 태스크는 하위 태스크로 나눌 수 있으며, 각 태스크는 코드 형식으로 직접 표시하거나 더 작은 하위 태스크로 나눌 수 있습니다. 이 방법을 단계별 세분화라고 합니다. 기능은 해결할 하위 작업의 코드를 작성하는 데 사용됩니다. 함수의 기능을 설명하는 코드를 다음과 같이 부릅니다, 함수 정의:

function_header
  {
   instructions
  }

첫 번째 꺽쇠 앞에 있는 것은 함수 정의의 header이며, 꺽쇠 사이에 있는 것은 함수 정의의 body입니다. 함수 헤더에는 반환 값 유형, 이름(식별자) 및 형식 매개변수에 대한 설명이 포함됩니다.  함수에 전달되는 매개 변수 수는 제한되며 64개를 초과할 수 없습니다.

이 기능은 프로그램의 다른 부분에서 필요한 횟수만큼 호출할 수 있습니다. 실제로 반환 유형, 함수 식별자 및 매개변수 유형은 함수 프로토타입을 구성합니다.

함수 프로토타입은 함수 선언이지만 정의는 아닙니다. 반환 유형의 명시적 선언과 인수 유형의 목록으로 인해 함수 호출 중에 엄격한 유형 확인 및 암시적 유형 캐스팅이 가능합니다. 코드 가독성을 높이기 위해 함수 선언이 클래스에 사용되는 경우가 매우 많습니다.

함수 정의는 해당 선언과 정확히 일치해야 합니다. 선언된 각 함수를 정의해야 합니다.

예제:

double                       // 값 유형 반환
linfunc (double a, double b) // 함수 이름 및 매개 변수 목록
  {
                             // 복합 연산자
   return (a + b);           // 값 반환
  }

 

return연산자는 이 연산자에 있는 표현식의 값을 반환할 수 있습니다. 필요한 경우 표현식 값이 함수 결과 유형으로 변환됩니다. 반환 가능 항목: simple types, simple structures, object pointers. return 연산자를 사용하면 배열, 클래스 객체, 복합 구조 유형의 변수를 반환할 수 없습니다.

값을 반환하지 않는 함수는 void 유형의 함수로 서술되어야 합니다.

예제:

void errmesg(string s)
  {
   Print("error: "+s);
  }

 

함수에 전달되는 매개 변수는 해당 유형의 상수로 정의된 기본값을 가질 수 있습니다.

예제:

int somefunc(double a,
             double d=0.0001,
             int n=5,
             bool b=true,
             string s="전달된 문자열")
  {
   Print("필수 파라미터 a = ",a);
   Print("다음 매개 변수 전달: d = ",d," n = ",n," b = ",b," s = ",s);
   return(0);
  }

 

매개변수에 기본값이 있는 경우 이후의 모든 매개변수에도 기본값이 있어야 합니다.

잘못된 선언의 예:

int somefunc(double a,
             double d=0.0001,    // 기본값 0.0001 선언됨
             int n,              // 기본값이 지정되지 않았습니다 !
             bool b,             // 기본값이 지정되지 않았습니다 !
             string s="전달된 문자열")
  {                                          
  }          

더 보기

오버로드, 가상 함수, 다형성