Templated Functions

15
http://cs.mst.edu Templated Functions

description

Templated Functions. Overloading vs Templating. Overloaded functions allow multiple functions with the same name but different functionality. Templated functions allow for different types of parameters but have exactly the same functionality. Template Specifics. - PowerPoint PPT Presentation

Transcript of Templated Functions

Page 1: Templated  Functions

http://cs.mst.edu

Templated Functions

Page 2: Templated  Functions

http://cs.mst.edu

Overloading vs Templating Overloaded functions allow multiple functions

with the same name but different functionality. Templated functions allow for different types of

parameters but have exactly the same functionality.

Page 3: Templated  Functions

http://cs.mst.edu

Template Specifics Template functions are NOT prototyped. Templated code must be placed…

above the main function if your program is in one file in a header file if your program is in multiple files

Page 4: Templated  Functions

http://cs.mst.edu

Syntax

template <typename T>void swap ( T & t1, T & t2){    T temp = t1;    t1 = t2;    t2 = temp;    return;}

Page 5: Templated  Functions

http://cs.mst.edu

Syntax

template < class T>void swap ( T & t1, T & t2){    T temp = t1;    t1 = t2;    t2 = temp;    return;}

Page 6: Templated  Functions

http://cs.mst.edu

Syntax

template <typename T>void swap ( T & t1, T & t2){    T temp = t1;    t1 = t2;    t2 = temp;    return;}

Page 7: Templated  Functions

http://cs.mst.edu

Exampletemplate <typename T>void swap (T & t1, T & t2){    T temp = t1;    t1 = t2;    t2 = temp;    return;}

int main(){    int a = 8, b = 3;    float c = 4.3, d = 98.5;    char c1 ='y', c2 = '@';

    swap ( a, b );    swap ( c1, c2 );    swap ( c, d );    return 0;}

Page 8: Templated  Functions

http://cs.mst.edu

Exampletemplate <typename T=int>void swap (int& t1, int& t2){    int temp = t1;    t1 = t2;    t2 = temp;    return;}

int main(){    int a = 8, b = 3;    float c = 4.3, d = 98.5;    char c1 ='y', c2 = '@';

    swap ( a, b );    swap ( c1, c2 );    swap ( c, d );    return 0;}

Page 9: Templated  Functions

http://cs.mst.edu

Exampletemplate <typename T=char>void swap (char& t1, char& t2){    char temp = t1;    t1 = t2;    t2 = temp;    return;}

int main(){    int a = 8, b = 3;    float c = 4.3, d = 98.5;    char c1 ='y', c2 = '@';

    swap ( a, b );    swap ( c1, c2 );    swap ( c, d );    return 0;}

Page 10: Templated  Functions

http://cs.mst.edu

Exampletemplate <typename T=float>void swap (float& t1, float& t2){    float temp = t1;    t1 = t2;    t2 = temp;    return;}

int main(){    int a = 8, b = 3;    float c = 4.3, d = 98.5;    char c1 ='y', c2 = '@';

    swap ( a, b );    swap ( c1, c2 );    swap ( c, d );    return 0;}

Page 11: Templated  Functions

http://cs.mst.edu

The Importance of Documentation// Pre: The type to fill the template parameter must have // the insertion operator defined for it.template <typename U>void print (const U & u){    cout << u;    return;}

// Pre: The type of the template parameter must have the // < operator defined.template <typename T_type>T_type min_value (const T_type & t1, const T_type & t2){    return (t1 < t2 ? t1 : t2);}

Page 12: Templated  Functions

http://cs.mst.edu

Templating Two Types

// Pre: Both template types must have insertion // operator defined.template <typename T, typename U>void repeater (const int num_times, const T t1, const U u1){    for (short i = num_times; i > 0; i--)        cout << t1 << “ ” << u1 << endl;    return;}

Page 13: Templated  Functions

http://cs.mst.edu

// Pre: Both template types must have insertion // operator defined.template <typename T, typename U>void repeater (const int num_times, const T t1, const U u1){    for (short i = num_times; i > 0; i--)        cout << t1 << “ ” << u1 << endl;    return;}

int main(){ char some_character = ‘$’; float a_float_value = 2.2; repeater(4, some_character, a_float_value);

return 0;}

Page 14: Templated  Functions

http://cs.mst.edu

// Pre: Both template types must have insertion // operator defined.template <typename T, typename U>void repeater (const int num_times, const T t1, const U u1){    for (short i = num_times; i > 0; i--)        cout << t1 << “ ” << u1 << endl;    return;}

int main(){ char some_character = ‘$’; float a_float_value = 2.2; repeater(4, some_character, a_float_value);

return 0;}

$ 2.2$ 2.2$ 2.2$ 2.2

output

Page 15: Templated  Functions

http://cs.mst.edu

End of Session