Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

Formoat's Open Blog

디폴트 매개변수(Default Parameter) 본문

C & C++/C++ Basic

디폴트 매개변수(Default Parameter)

snd-snd 2019. 9. 21. 19:39

디폴트 매개변수

 

디폴트 매개변수는 기본값이 정의되어 있는 매개변수로, 일반적인 함수 호출의 경우와 다르게,

호출된 함수에 맞는 매개변수의 실인수를 기술하지 않더라도 매개변수가 기본값으로 초기화되어 사용된다.

반대로 매개변수의 실인수를 기술한다면 기본값은 사용되지않고 기술한 실인수로 초기화 된다.

 

#include "stdafx.h"
#include <iostream>
using namespace std;

void TestFunc(int nParam = 100) // TestFunc함수의 nParam의 디폴트 값은 100이다.
{
	cout << nParam << endl;
}

int main()
{
	TestFunc(); // 실인수를 기술하지 않더라도 기본값인 100이 초기화 된다.
	TestFunc(200); // 실인수를 기술해 디폴트값은 무시하고 200으로 초기화 된다.
    return 0;
}

 

디폴트 매개변수를 사용할 경우 몇가지 유의사항이 존재한다.

 

1. 피호출자 함수 매개변수의 디폴트 값은 반드시 오른쪽 매개변수부터 기술할 것.

2. 매개변수가 여러 개일 때 첫째 매개변수가 디폴트 매개변수라면 나머지 모든 매개변수도 디폴트 매개변수여야 함.

3. 호출자 함수가 피호출자 함수 매개변수의 실인수를 기수하면 이는 왼쪽부터 짝을 맞추어 적용된다.

 

예1)

void TestFunc(int val1, int val2 = 20) { ... } (O)

void TestFunc(int val1 = 10, int val2) { ... } (X)  디폴트 값은 우측부터 기술 가능

 

위 사항을 지키지 않을 시 컴파일 오류가 발생하게 된다.

 

P.S

또한 위사항 말고도 오버로딩을 통해 함수를 다중 정의했을 때 디폴트 매개변수 사용으로 인해 함수자체는

컴파일 오류가 발생하지 않더라도 호출자 코드에서 함수 호출시 모호성에 빠져 컴파일 오류가 발생할 수 있다.

'C & C++ > C++ Basic' 카테고리의 다른 글

변환 생성자(Conversion Constructor)  (0) 2019.09.22
복사 생성자(Copy Constructor)  (0) 2019.09.22
클래스(Class)  (0) 2019.09.21
네임 스페이스(Namespace)  (0) 2019.09.21
C → C++  (0) 2019.09.16
Comments