TEMPLATES INTRODUCTION FUNCTION TEMPLATES CLASS TEMPLATES NESTED CLASS













- Slides: 13

TEMPLATES INTRODUCTION, FUNCTION TEMPLATES, CLASS TEMPLATES, NESTED CLASS TEMPLATES, STL, www. bookspar. com | Website for students | VTU NOTES

WE FREQUENTLY COME ACROSS FUNCTIONS THAT WORK EXACTLY SAME WAY FOR DIFFERENT DATA TYPES • Each of these functions is designed to handle a a specific datatype. • For different types of variables, only the keyword used to declare variables upon which they work changes. • The algorithm implementation of these functions and structure of the function remains the same. • Eg – function to swap 2 values www. bookspar. com | Website for students | VTU NOTES

A FUNCTION TO SWAP 2 INTEGERS void swap(int &a, int &b) { int temp; temp = a; a = b; b = temp; } www. bookspar. com | Website for students | VTU NOTES

A FUNCTION TO SWAP 2 FLOAT TYPE NUMBERS void swap( float &a, float &b) { float temp; temp=a; a=b; b=temp; www. bookspar. com | Website for students | VTU NOTES

NOTE THAT 2 SWAP FUNCTIONS ARE SAME EXCEPT FOR DATATYPE OF VARIABLES UPON WHOM THEY WORK. • C++ provides facility to write a common function i. e. independent of a datatype but embodies common algorithm and C++ on its own creates the actual function as and when the need arises. • Having the code at a common place has advantages 1. Ease in code Maintenance and this facility is provided in form of Templates. • Programmer can create a template with some or all variables therein having unspecified datatypes. www. bookspar. com | Website for students | VTU NOTES

• Whenever the template is invoked by passing arguments of a certain type, the C++ language on its own replaces the unspecified type with type of arguments passed. Such templates can be created for individual functions as well as entire classes. www. bookspar. com | Website for students | VTU NOTES

FUNCTION TEMPLATES SYNTAX FOR CREATING A TEMPLATE FOR A GENERIC FUNCTION template <class T, …> return_type function_name(T arg 1, …) { //statements } Syntax for a fucntion template www. bookspar. com | Website for students | VTU NOTES

THE TEMPLATE DEFINITION BEGINS WITH A TEMPLATE KEYWORD THAT IS FOLLOWED BY A LIST OF GENERIC DATATYPES IN ANGULAR BRACKETS Each generic type is prefixed with a class keyword and , if a template function work with more than one generic type, commas separate them. Hence function template is defined as any ordinary function with return type coming first , followed by function_name in turn followed by a pair of parentheses enclosing the list of formal arguments the function takes. In the least, there should be atleast one formal argument of each one of generic types | Website for within angular www. bookspar. com brackets students | VTU NOTES

TEMPLATE FOR THE FUNCTION SWAP CAN BE AS FOLLOWS : //swap. h Template <class T> Void swap(T &a, T &b) { T temp; temp=a; a=b; b=temp; } www. bookspar. com | Website for students | VTU NOTES

SUPPOSE THE FUNCTION SWAP IS CALLED BY PASSING 2 INTEGERS. THE COMPILER GENERATES AN ACTUAL DEFINITION FOR THE FUNCTION BY REPLACING EACH OCCURRENCE OF OF T THE KEYWORD INT /*swap 1. cpp*/ Similarly if the function swap is called by passing 2 floats, the compiler generates an actual definition for function by replacing each occurrence of T by the keyword float an so on. /*swap 2. cpp*/ www. bookspar. com | Website for students | VTU NOTES

OBJECTS OF A CLASS CAN ALSO BE PASSED TO THE FUNCTION SWAP. THE COMPILER WILL GENERATE AN ACTUAL DEFINITION BY REPLACING EACH OCCURRENCE OF T BY THE NAME OF CORRESPONDING CLASS //SWAP 3. CPP • Note – The amount of effort saved in code development is significant development. One definition suffices for all possible types. • Templates are very handy tool provided by C++ for implementing code reusability. • Compiler generates an actual function from a template only once for a given datatype. • Eg – if swap is called by passing integers for first time, compiler will generate the a function definition from its template www. bookspar. com | Website for students | VTU NOTES

SUBSEQUENT CALLS WITH SAME DATATYPE WILL NOT GENERATE THE SAME DEFINITION AGAIN. REASON – COMPILER FIRST LOOKS FOR AN EXACT MATCH • Reason – Compiler first looks for an exact match to resolve a function call before looking for a template. • If match found, it will not look for template. • Since first call itself generates function definition, subsequent calls don’t do so. • Definition of a function must appear in the header file. Compiler will not generate correct definition www. bookspar. com | Website for students | VTU NOTES

EXPORT KEYWORD PUTS DEFINITON OF TEMPLATE FUNCTION IN A LIBRARY KEEPING ONLY PROTOTYPE IN A HEADER FILE. ALL COMPILERS MAY NOT SUPPORT THIS KEYWORD. www. bookspar. com | Website for students | VTU NOTES
Member variable and member function
Alter introduction template
Nested quotations
Nested quantifiers
Nested design in statistics
Nested loop join
Nested selection structure
Contoh soal rancangan tersarang
Pseudocode if else
Flowchart for looping
Contoh program nested loop c++
Is nested loops bad
Sql nested aggregate functions
For loop in c example