1. ํ ํ๋ฆฟ
- 'ํํ'์ด๋ผ๋ ์๋ฏธ, ๋ถ์ด๋นต ํ ๊ฐ์ ๊ฑฐ
- ์ฌ๋ฃ๋ง ๊ฐ์ง๊ณ ๋๊ฐ์ ๋ชจ์์ผ๋ก ์ฐ์ด๋ผ ์ ์์ผ๋ฉฐ, ๋ฃ๋ ์ฌ๋ฃ์ ๋ฐ๋ผ ๋ด์ฉ๋ฌผ์ ์กฐ๊ธ์ฉ ๋ฌ๋ผ์ง๋ค.
- ๊ธฐ๋ฅ์ ์ด๋ฏธ ๊ฒฐ์ ๋์ด ์์ผ๋, ์๋ฃํ์ด ์ ํด์ง์ง ์๋๋ค๋ ํน์ง์ ๊ฐ์ง๊ณ ์๋ค.
- ํจ์ ํ ํ๋ฆฟ : ํจ์๋ฅผ ์ฐ์ด๋ด๋ ํ
- ํด๋์ค ํ ํ๋ฆฟ : ํด๋์ค๋ฅผ ์ฐ์ด๋ด๋ ํ
2. ํจ์ ํ ํ๋ฆฟ
#include <iostream>
using namespace std;
template<typename T>
void Swap(T& num1, T& num2)
{
T temp = num1;
num1 = num2;
num2 = temp;
}
int main()
{
int num1=10, num2=40;
cout << "before, num1: " << num1 << ", num2: " << num2 << endl;
Swap(num1, num2);
cout << "after, num1: " << num1 << ", num2: " << num2 << endl;
double num3=15.6, num4=14.44;
cout << "before, num1: " << num3 << ", num2: " << num4 << endl;
Swap(num3, num4);
cout << "after, num1: " << num3 << ", num2: " << num4 << endl;
return 0;
}
before, num1: 10, num2: 40
after, num1: 40, num2: 10
before, num1: 15.6, num2: 14.44
after, num1: 14.44, num2: 15.6
๊ณ์ํ๋ ค๋ฉด ์๋ฌด ํค๋ ๋๋ฅด์ญ์์ค . . .
T๋ฅผ ์ด์ฉํ์ฌ, ์๋์ ์์นํ ํจ์๋ฅผ ํ ํ๋ฆฟ์ผ๋ก ์ ์ํ๊ฒ ๋ค๋ ๋ป
์ปดํ์ผ๋ฌ๊ฐ ์ ๋ฌ๋๋ ์ธ์์ ์๋ฃํ์ ๋ณด๊ณ T์ ํ์ ์ ์ ์ถํ๋ ๊ฒ์ด๋ฉฐ, ์๋์ ๊ฐ์ด ๋ช ์์ ์ผ๋ก ํด์ํ๋๋ก ํ์ ์ ์ง์ ํด์ฃผ์ด๋ ๋๋ค.
int num1=10, num2=40;
cout << "before, num1: " << num1 << ", num2: " << num2 << endl;
Swap<int>(num1, num2);
cout << "after, num1: " << num1 << ", num2: " << num2 << endl;
double num3=15.6, num4=14.44;
cout << "before, num1: " << num3 << ", num2: " << num4 << endl;
Swap<double>(num3, num4);
cout << "after, num1: " << num3 << ", num2: " << num4 << endl;
์ฐธ๊ณ ๋ก, ํ ํ๋ฆฟ์ ์ ์ํ ๋ ๊ผญ T๋ผ๋ ์ด๋ฆ์ด ์๋์ฌ๋ ๊ด์ฐฎ๋ค. T๋ ์ผ๋ฐ์ ์ผ๋ก ์ฐ๋ ์ด๋ฆ์ด๋ค.
๋ง๋ถ์ฌ์ typename์ class๋ก ์จ๋ ๊ด์ฐฎ๋ค. ์ฆ, typename T = class T ๊ฐ์ ์๋ฏธ
3. ํด๋์ค ํ ํ๋ฆฟ
#include <iostream>
using namespace std;
template <typename T>
class Data
{
private:
T data;
public:
Data(T data) : data(data) { }
void ShowInfo() {
cout << data << endl;
}
};
int main()
{
Data<int> data1(50);
data1.ShowInfo();
Data<char> data2('A');
data2.ShowInfo();
Data<double> data3(24.377);
data3.ShowInfo();
}
50
A
24.377
๊ณ์ํ๋ ค๋ฉด ์๋ฌด ํค๋ ๋๋ฅด์ญ์์ค . . .
ํด๋์ค ํ ํ๋ฆฟ์์๋ ์๋ฃํ ์ ๋ณด๋ฅผ ์๋ตํ๋ฉด ์๋๋ค.
๐ ํจ์ ํ ํ๋ฆฟ๊ณผ ํ ํ๋ฆฟ ํจ์, ํด๋์ค ํ ํ๋ฆฟ๊ณผ ํ ํ๋ฆฟ ํด๋์ค
- ํจ์/ํด๋์ค ํ ํ๋ฆฟ : ํจ์/ํด๋์ค๋ฅผ ๋ง๋๋๋ฐ ์ฌ์ฉ๋๋ ํ ํ๋ฆฟ
- ํ
ํ๋ฆฟ ํจ์/ํด๋์ค : ํ
ํ๋ฆฟ์ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ง ํจ์/ํด๋์ค
- ๊ฐ์กฐํ๋ ๋ถ๋ถ์ด ๋ค๋ฅด๋ค.
์ฐธ๊ณ ์๋ฃ
'๐ฉโ๐ป ํ๋ก๊ทธ๋๋ฐ > ๐ C++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++] String ํด๋์ค ๋์์ธ (0) | 2024.05.06 |
---|---|
[C++] ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ (0) | 2024.04.30 |
[C++] ๊ฐ์์ ์๋ฆฌ์ ๋ค์ค์์ (0) | 2024.04.29 |
[C++] ์์๊ณผ ๋คํ์ฑ | ๊ฐ์ํจ์(virtual function) | ์ฐธ์กฐ์ (1) | 2024.04.26 |
[C++] ์์ (0) | 2024.04.23 |