:: ADVANCE ::

[C/C++] C++ 기능 1 본문

language/C | C++

[C/C++] C++ 기능 1

KSJ14 2014. 9. 16. 00:27
반응형

추가된 함수 기능

 

1. 오버로딩 (Overloading)

 이름은 같고 매개변수의 개수나 자료형을 다르게 지정하여 하나의 이름으로 여러가지 기능을 갖는 함수를 만들수 있다.

 
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
#include <iostream>  
using namespace std;  
  
int add(int a, int b)  
{  
    int sum;  
    sum = a+b;  
    return sum;  
}  
  
int add(int a, int b, int c)  
{  
    int sum;  
    sum = a+b+c;  
    return sum;  
}  
  
double add(double a, double b)  
{  
    double sum;  
    sum = a+b;  
    return sum;  
}  
  
int main()  
{  
    cout<<add(10, 20)<<endl;  
    cout<<add(10, 20, 25)<<endl;  
    cout<<add(10.4, 20.1)<<endl;  
    return 0;  
}

 

 

2. 매개변수의 디폴트값(Default Value)

 C++에서는 함수의 매개변수에 초기값을 부여할 수 있으며, 매개변수에 전달되는 값이 없을 경우, 초기값이 매개변수에 할당된다. 매개변수가 유효할 경우, 이 초기값은 무시하며, 초기값부여할 때 앞쪽의 매개변수에 초기값을 부여하게되면 이후 나오는 모든 매개변수에 초기값을 부여하여야 한다. 함수를 호출할 때 넘겨주는 매개변수는 앞쪽에서부터 대입되므로, 앞쪽의 매개변수의 값을 생략해서 호출할 수는 없다.

 

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
#include <iostream>  
using namespace std;  
  
int add(int a=0, int b=0)  
{  
    return a+b;  
}  
  
int sub(int a, int b=0)  
{  
    return a-b;  
}  
  
int func(int a=0, int b)    //앞쪽의 매개변수가 초기값을 가지면, 뒤쪽에도 부여해야함  
{  
  
}  
  
int main()  
{  
    cout<<add(10, 20)<<endl;  
    cout<<add(10)<<endl;  
    cout<<add()<<endl;  
 //   cout<<add(, 20)<<endl;  //앞쪽의 매개변수를 생략해서 호출은 불가  
    return 0;  
}  
 

 

 

3. 인라인 함수(inline)

 실행속도를 빠르게할 목적으로 만드는 함수이며, 매크로처럼 미리 번역된다. 복잡한 제어문은 사용할 수 없으며, 인라인 함수도 overloading이 가능하다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>  
using namespace std;  
  
inline int add(int a, int b)  
{  
    return a+b;  
}  
  
inline int add(int a, int b, int c)  
{  
    return a+b+c;  
}  
  
int main()  
{  
    cout<<add(10, 20)<<endl;  
    cout<<add(10, 20, 30)<<endl;  
    return 0;  
}    

 

반응형

'language > C | C++' 카테고리의 다른 글

[C++] Class  (0) 2015.07.13
[C/C++] C++ 기능 3  (0) 2014.09.16
[C/C++] C++ 기능 2  (0) 2014.09.16
[C/C++] C와 C++  (0) 2014.09.16
[C++] Efficient C++  (1) 2014.09.15
Comments