1 / 15

Templated Functions

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.

kenton
Download Presentation

Templated Functions

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Templated Functions

  2. Overloading vsTemplating 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.

  3. 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

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

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

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

  7. Example template <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;}

  8. Example template <typename T=int>void swap (int& t1, int& t2){inttemp = 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;}

  9. Example template <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;}

  10. Example template <typename T=float>void swap (float& t1, float& t2){floattemp = 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;}

  11. 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 <typenameT_type>T_typemin_value (const T_type & t1, const T_type & t2){    return (t1 < t2 ? t1 : t2);}

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

  13. // Pre: Both template types must have insertion // operator defined. template <typename T, typename U>void repeater (const intnum_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; }

  14. // Pre: Both template types must have insertion // operator defined. template <typename T, typename U>void repeater (const intnum_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; } output $ 2.2$ 2.2$ 2.2$ 2.2

  15. End of Session

More Related