Question 1
Which of the following is true about templates.
1 and 2
1, 2 and 3
1, 2 and 4
1, 2, 3 and 4
Question 2
Predict the output?
#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
Question 3
#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
Question 4
#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
Question 5
#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
8 8
Question 6
#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
Question 7
Output of following program.
#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
Question 8
What will be the output of the following C++ code?
#include <iostream> using namespace std; template <class T> T max (T& a, T& b) { return (a>b?a:b); } int main () { int i = 5, j = 6, k; long l = 10, m = 5, n; k = max(i, j); n = max(l, m); cout << k << endl; cout << n << endl; return 0; }
6
6 10
5 10
5
There are 8 questions to complete.