7. Utilization of Functions

지니🧸·2023년 2월 24일
0

C++

목록 보기
7/10

본 문서는 인프런의 [하루 10분|C++] 누구나 쉽게 배우는 C++ 프로그래밍 입문 강의를 공부하며 작성한 개인 노트입니다.

🕰️ 인라인 함수와 디폴트 매개변수

일반적 함수 호출 - 함수의 주소로 점프하는 과정

인라인 함수

인라인 함수: 컴파일된 함수 코드가 프로그램의 다른 코드에 삽입

  • 컴파일러의 인라인 함수 호출 = 점프가 아닌 그에 대응하는 함수 코드로 대체
  • 인라인 정의: 함수의 정의/선언 앞에 inline 키워드 삽입
#include <iostream>

using namespace std;

inline float square(float x) {return x*x; }

int main() {
	int a = 5;
    float b = square(a);
    cout << b << endl;
}

디폴트 매개변수

디폴트 매개변수: 실제 매개변수가 생략되었을 때 매개변수 대신 사용되는 디폴트 값

  • 선언하고자하는 매개변수는 가장 오른쪽이여야 한다
    • 가장 오른쪽이 아닐 경우에는 그 매개변수 오른쪽의 모든 변수가 선언되어 있어야 한다
int sumArr(int*, int n = 1);

💰 참조 변수

참조, reference: 미리 정의된 변수의 실제 이름 대신 사용할 수 있는 대용 이름

  • 함수의 매개변수에 사용
  • 참조를 매개변수로 사용하면 그 함수는 복사본이 아닌 원본으로 사용함
    • 구조체의 크기(volume)이 크면 포인터 대신에 참조를 사용하는 것이 실행 속도 측명에서 유리함
  • & 사용 > int& b = a; > b는 a를 참조
int main() {
	
    int a;
    int& b = a;
    
    return 0;
}

참조(&) 또는 포인터(*)로 파라미터를 전달하면 의도에 맞게 실행되지만 값(변수명만)으로 전달하면 그렇지 못하다

🎫 함수 오버로딩

다형: 다양한 형태

  • 함수는 다형이다 > 함수는 다양한 형태를 지닌다
    오버로딩 - 여러 개의 함수를 같은 이름으로 연결한다
  • 같은 이름이지만 파라미터가 다름
  • 오버로딩이 아닌 경우
    1. 함수의 리턴형만 다를 경우
    2. 함수를 사용할 때, 두 개 이상의 함수에 대응되는 경우
#include <iostream>

using namespace std;

void print(char, int);
void print(int, int);
void print(char);

int main() {
	print('a', 3);
    print(3, 2);
    print('a');
    
    return 0;
}

함수 템플릿

함수 템플릿 - 함수의 일반화에 대한 서술

  • 구체적인 데이터형을 포괄할 수 있는 일반형으로 함수를 정의
  • 일반화: 특정 데이터형에 귀속되지 않고 일반(범용)적으로 사용할 수 있게
  • template 키워드
    • (예) template <class Any>의 메소드: Any sum(Any, Any), Any sum(int, Any)
#include <iostream>

using namespace std;

//class 혹은 typeName
**template <class Any>**
Any sum(Any, Any);

int main() {
	int a = 3;
    int b = 4;
    cout << sum(a, b) << endl;
    
    float c = 3.14;
    float d = 1.592; 
    cout << sum(c, d) << endl;
    
    return 0;
}
    

template<class Any>
Any sum(Any a, Any b) {
	return a+b;
}
profile
우당탕탕

0개의 댓글