42seoul/projects

[C++] templates

moaoh 2024. 3. 13. 15:19

C++ templates

์ฝ”๋“œ์˜ ์ผ๋ฐ˜ํ™”์™€ ์žฌ์‚ฌ์šฉ์„ ์œ„ํ•œ ๊ฐ•๋ ฅํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ

// templates function
template <typename T>
T add(T a, T b) {
    return a + b;
}

int main() {
    // intํ˜• ์ธ์ˆ˜๋ฅผ ๊ฐ–๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ
    std::cout << add(5, 3) << std::endl;

    // doubleํ˜• ์ธ์ˆ˜๋ฅผ ๊ฐ–๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ
    std::cout << add(3.14, 2.71) << std::endl;

    return 0;
}

์œ„์™€ ๊ฐ™์€ ํ˜•์‹์ฒ˜๋Ÿผ template <typename T> ์ด๋ผ๋Š” ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ์–ด๋– ํ•œ ํƒ€์ž…์ด๋“  ์œ ๋™์ ์œผ๋กœ ๋™์ž‘ํ•˜์—ฌ ํ•˜๋‚˜์˜ ํ•จ์ˆ˜๋กœ ๊ฐ’์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

// templates class
template <typename T>
class Pair {
public:
    T first;
    T second;

    Pair(T a, T b) : first(a), second(b) {}
};

์œ„์™€ ๊ฐ™์ด class์—๋„ ์ ์šฉ๊ฐ€๋Šฅ.