1. Declare(선언), Define(정의/구현), Call(호출)
- 함수의 선언: main함수 위에서 함수의 입력 타입/이름/출력 타입 을 알려줌 ('prototyping'한다)
- 함수의 정의: main함수 아래에(*권장사항) 함수를 실제로 구현해줌 → 함수 여러 개를 main함수 위에서 선언과 정의를 동시에 하게되면 가장 실질적인 수행을 담당하는 main이 아래로 내려가버림, 실제로 프로그램의 사용자 입장에서는 입/출력 외에 함수 내부는 중요하지 않음
- 함수의 호출: main함수 안에서 실제로 구현한 함수를 사용함
#include <iostream>
int myAdd(int p, int q); //1. 선언부: [출력 타입] [함수이름]([입력 타입])
int main() {
int y, a = 3, b = 5;
y = myAdd(a, b); //3. 호출
return 0;
}
int myAdd(int p, int q) {
return p + q; //2. 구현부: { 함수의 기능, return값 }
}
2. 함수의 Input/Return Value(입력/반환값) 유무
1. 입력/반환값이 없는 함수
void prompt() {
cout << " Please enter an integer value: " << endl;
}
- 출력(반환) 타입에 void
- 입력 파라미터 자리 ()로 비워둠
- 함수 body에 return 없음
2. 반환값이 있는 함수
int prompt() {
int result;
cout << "Please enter an integer value: ";
cin >> result;
return result;
}
//반환값이 있는 함수는 추후 main에서 호출하여 변수에 값 할당을 바로 할 수 있음
int main() {
int value1, value2, sum;
value1 = prompt();
value2 = prompt();
sum = value1 + value2;
cout << value1 << " + " << value2 << " = " << sum << endl;
return 0;
}
- 출력(반환) 타입을 함수 이름 앞에 적어줌
- 함수 body에 [return 결과] 명시
3. 입력/반환값이 있는 함수
int prompt(int n) {
int result;
cout << "Please enter integer #" << n << ": ";
cin << result;
return result;
}
int main() {
int value1, value2, sum;
value1 = prompt(1);
value2 = prompt(2);
sum = value1 + value2;
cout << value1 << " + " << value2 << " = " << sum << endl;
return 0;
}
- 출력(반환) 타입을 함수 이름 앞에 적어줌
- 입력 타입과 입력 파라미터 적어줌
- 함수 body에 [return 결과] 명시
3. Library (라이브러리)
- 기존에 만들어진 함수, 클래스들의 집합
- #include <빌트인 라이브러리> or #include "사용자 정의 라이브러리"
- 문장 끝에 [ ; ] 붙이지 않음
- ex) #include <iostream> → 표준 입/출력 관련 라이브러리
- ex) #include <cmath> → c++에서 쓸 수 있는 수학적 함수들의 집합
#include <iostream>
#inlcude <cmath>
using namespace std;
int main() {
double input;
cout << "Enter number: ";
cin >> input;
//ex) sprt는 cmath 안의 함수, cmath라이브러리를 include해야 쓸 수 있음
double root = sqrt(input);
cout << "Square root of " << input << " = " << root << endl;
//cmath 안의 다른 함수들
cout << exp(input) << endl; //지수함수
cout << log10(input) << endl; //로그함수 (10 안적어주면 밑이 e인 자연로그)
cout << cos(input) << endl; //코사인함수
return 0;
}
4. Default Arguments
- 함수에 값을 할당하지 않았을 때(=입력값을 주지 않았을 때) 자동으로 내가 지정해놓은 값이 할당됨
- 함수에 값 하나를 입력하면 가장 왼쪽에 있는 파라미터가 default가 아닌 입력해준 값으로 바뀜
- default argument 걸어줄 시 선언부에만 !!! 구현부에서 사용 시 컴파일 에러
- 항상 왼쪽-오른쪽으로 값 바뀜, 두 번째 입력 파라미터를 바꾸고 싶다고 함수 호출 시 ( , 1500) 할 수 없음 → 따라서 바뀔 가능성이 많은 값부터 앞에 놔두기! 값을 바꾸기 싫은 변수일수록 함수 파라미터 뒷 순서로 미루기
#include <iostream>
using namespace std;
//선언부
void applePrice(int a = 1000);
void point(int x = 3, int y = 4);
int main() {
applePrice(1500);
applePrice(500);
applePrice(1000);
applePrice(); // 함수에 값 할당하지 않아도 n=1000이 자동으로 할당됨
point(1, 2); //1, 2 입력
point(1); //1, 4 입력
point(); //3, 4 입력
// point(, 3) //3, 3 입력되는 게 아님!!!!
return 0;
}
//구현부
void applePrice(int a); { //int a = 1000 하면 error!!!!
cout << "Price of an apple is " << a << endl;
}
void point(int x, int y); {
cout << "Point : ( " << x << ", " << y << " )" << endl;
}
*)sample codes: https://github.com/halterman/CppBook-SourceCode
반응형
'코딩 > 객체지향프로그래밍' 카테고리의 다른 글
[C++] String, File - 문자열과 파일 (1) (0) | 2020.07.23 |
---|---|
[C++] 조건문과 반복문 (2) (0) | 2020.07.21 |
[C++] 조건문과 반복문 (1) (0) | 2020.07.18 |
[C++] 함수(2) (0) | 2020.07.15 |
[C++] C++ basic (0) | 2020.07.13 |