Рубрики

C ++ | Шаблоны | Вопрос 6

Вывод следующей программы? Предположим, что размер int равен 4 байтам, а размер double равен 8 байтам, и компилятор не выполняет выравнивание.

#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

(D) Ошибка компилятора: параметры шаблона не могут иметь значения по умолчанию.

Ответ: (А)
Объяснение: шаблоны также могут иметь параметры по умолчанию. Правило одинаково, все значения по умолчанию должны быть с правой стороны.

Так как count является статическим, он не учитывается в sizeof.
Тест на этот вопрос

Рекомендуемые посты:

C ++ | Шаблоны | Вопрос 6

0.00 (0%) 0 votes