C++ Templates

Lakukan tugas rumah & ujian kamu dengan baik sekarang menggunakan Quizwiz!

Which of the following is true about templates. 1) Template is a feature of C++ that allows us to write one code for different data types. 2) We can write one function that can be used for all data types including user defined types. Like sort(), max(), min(), ..etc. 3) We can write one class or struct that can be used for all data types including user defined types. Like Linked List, Stack, Queue ..etc. 4) Template is an example of compile time polymorphism. - 1 and 2 - 1, 2 and 3 - 1, 2 and 4 - 1, 2, 3 and 4

1, 2, 3 and 4

#include <iostream> using namespace std; template <class T, int max> int arrMin(T arr[], int n) { int m = max; for (int i = 0; i < n; i++) if (arr[i] < m) m = arr[i]; return m; } int main() { int arr1[] = {10, 20, 15, 12}; int n1 = sizeof(arr1)/sizeof(arr1[0]); char arr2[] = {1, 2, 3}; int n2 = sizeof(arr2)/sizeof(arr2[0]); cout << arrMin<int, 10000>(arr1, n1) << endl; cout << arrMin<char, 256>(arr2, n2); return 0; } - Compiler error, template argument must be a data type. - 10 1 - 10000 256 - 1 1

10 1

#include <iostream> using namespace std; template <class T> class Test { private: T val; public: static int count; Test() { count++; } }; template<class T> int Test<T>::count = 0; int main() { Test<int> a; Test<int> b; Test<double> c; cout << Test<int>::count << endl; cout << Test<double>::count << endl; return 0; } - 0 0 - 1 1 - 2 1 - 1 0

2 1

Output of following program? Assume that the size of char is 1 byte and size of int is 4 bytes, and there is no alignment done by the compiler. #include<iostream> #include<stdlib.h> using namespace std; template<class T, class U> class A { T x; U y; static int count; }; int main() { A<char, char> a; A<int, int> b; cout << sizeof(a) << endl; cout << sizeof(b) << endl; return 0; } - 6 12 - 2 8 - Compiler Error: There can not be more than one template arguments. - 8 8

2 8

Which of the following provides the best description of an entity type? - A specific concrete object with a defined set of processes (e.g. Jatin with diabetes) - A value given to a particular attribute (e.g. height - 230 cm) - A thing that we wish to collect data about zero or more, possibly real world examples of it may exist - A template for a group of things with the same set of characteristics that may exist in the real world

A template for a group of things with the same set of characteristics that may exist in the real world

Which of the following is incorrect in C++ ? (1)When we write overloaded function we must code the function for each usage. (2)When we write function template we code the function only once. (3)It is difficult to debug macros (4)Templates are more efficient than macros - (1) and (2) - (1), (2) and (3) - (3) and (4) - All are correct.

All are correct.

#include <iostream> using namespace std; template <class T> T max (T &a, T &b) { return (a > b)? a : b; } template <> int max <int> (int &a, int &b) { cout << "Called "; return (a > b)? a : b; } int main () { int a = 10, b = 20; cout << max <int> (a, b); } - 20 - Called 20 - Compiler Error

Called 20

#include <iostream> using namespace std; template <int i> void fun() { i = 20; cout << i; } int main() { fun<10>(); return 0; } - 10 - 20 - Compiler Error

Compiler Error

#include <iostream> using namespace std; template <typename T> T max(T x, T y) { return (x > y)? x : y; } int main() { cout << max(3, 7) << std::endl; cout << max(3.0, 7.0) << std::endl; cout << max(3, 7.0) << std::endl; return 0; } - 7 7.0 7.0 - Compiler Error in all cout statements as data type is not specified. - Compiler Error in last cout statement as call to max is ambiguous. - None of the above

Compiler Error in last cout statement as call to max is ambiguous.

#include <iostream> using namespace std; template<int n> struct funStruct { static const int val = 2*funStruct<n-1>::val; }; template<> struct funStruct<0> { static const int val = 1 ; }; int main() { cout << funStruct<10>::val << endl; return 0; } - Compiler Error - 1024 - 2 - 1

1024

Output of following program? Assume that the size of int is 4 bytes and size of double is 8 bytes, and there is no alignment done by the compiler. #include<iostream> #include<stdlib.h> using namespace std; template<class T, class U, class V=double> class A { T x; U y; V z; static int count; }; int main() { A<int, int> a; A<double, double> b; cout << sizeof(a) << endl; cout << sizeof(b) << endl; return 0; } - 16 24 - 8 16 - 20 28 - Compiler Error: template parameters cannot have default values.

16 24

#include <iostream> using namespace std; template <typename T> void fun(const T&x) { static int count = 0; cout << "x = " << x << " count = " << count << endl; ++count; return; } int main() { fun<int> (1); cout << endl; fun<int>(1); cout << endl; fun<double>(1.1); cout << endl; return 0; } - x = 1 count = 0 x = 1 count = 1 x = 1.1 count = 0 - x = 1 count = 0 x = 1 count = 0 x = 1.1 count = 0 - x = 1 count = 0 x = 1 count = 1 x = 1.1 count = 2 - Compiler Error

x = 1 count = 0 x = 1 count = 1 x = 1.1 count = 0


Set pelajaran terkait

Chapter 36 Organ Donation and Transplantation

View Set

Ch. 8: Skeletal System: Axial and Appendicular Skeleton

View Set

Survival and responses - 3.6.1.1

View Set

Harry Potter and the Sorcerer's Stone

View Set

CISSP Cram Test Questions: Domain 7 - Security Engineering

View Set

ACC 201 Ch. 3 Practice Questions

View Set

Wrist, hand, thumb, & finger bones & muscles

View Set

PEC Chapter 4 - Articles 4.6 to 4.9

View Set