오버라이딩을 사용하였을 때
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 |