(adsbygoogle = window.adsbygoogle || []).push({ google_ad_client: "ca-pub-8242763509535969", enable_page_level_ads: true }); [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
28
29
30
31
32
33
34
#include<iostream>
using namespace std;
 
void change(int &a, int &b) {
    int c = a;
    a = b;
    b = c;
}
void change(char &a, char &b) {
    char c= a;
    a = b;
    b = c;
 
}
 
void change(double &a, double &b) {
    double c = a;
    a = b;
    b = c;
}
void main() {
    int a = 1, b = 2;
    char c = '3', d = '4';
    double e = 5.3, f = 4.7;
 
    change(a, b);
    cout << a << "\t" << b << endl;
 
    change(c, d);
    cout << c << "\t" << d << endl;
 
    change(e, f);
    cout << e << "\t" << f << endl;
}



템플릿을 사용 했을 때

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<iostream>
using namespace std;
 
//template<class T>//T는 미결정 타입입니다. 아무거나 적어도 상관없습니다. class는 구표준입니다.
template<typename T>
void change(T &a, T &b) {
    T c = a;
    a = b;
    b = c;
}
void main() {
    int a = 1, b = 2;
    char c = '3', d = '4';
    double e = 5.3, f = 4.7;
 
    change(a, b);
    cout << a << "\t" << b << endl;
 
    change(c, d);
    cout << c << "\t" << d << endl;
 
    change(e, f);
    cout << e << "\t" << f << endl;
}

오버라이딩과 다르게 같은 함수를 다른 타입도 쓸 수 있습니다.


템플릿을 밑으로 정의 했을 때
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;
 
template<typename T>
void change(T &a, T &b);
 
//template<class T>//T는 미결정 타입입니다. 아무거나 적어도 상관없습니다. class는 구표준입니다.
void main() {
    int a = 1, b = 2;
    char c = '3', d = '4';
    double e = 5.3, f = 4.7;
 
    change(a, b);
    cout << a << "\t" << b << endl;
 
    change(c, d);
    cout << c << "\t" << d << endl;
 
    change(e, f);
    cout << e << "\t" << f << endl;
}
template<typename T>
void change(T &a, T &b) {
    T c = a;
    a = b;
    b = c;
}
 

 


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

[C++] Stack&Queue (예외처리, 소멸자, 템플릿 포함)  (0) 2017.04.20
setw() 함수  (0) 2017.04.20
[c++] 연산자 함수  (0) 2017.04.20
[c++] private 상속  (0) 2017.04.20
[C++] protected 상속  (0) 2017.04.20

+ Recent posts