Co wypisze fragment programu w języku C++ korzystający z szablonu klasy?
template <typename T>
class Para {
T a, b;
public:
Para(T x, T y) : a(x), b(y) {}
T suma() { return a + b; }
};
Para<int> p(7, 2);
Para<double> q(7, 2.5);
std::cout << p.suma() / 2 << " " << q.suma() / 2;Dlaczego tak
Szablon generuje osobną klasę dla każdego typu: w Para<int> pola i wynik suma() są typu int, więc 9 / 2 to dzielenie całkowite dające 4. W Para<double> liczba 7 zostaje zamieniona na 7.0, suma wynosi 9.5, a 9.5 / 2 = 4.75. Odpowiedź 4.5 4.75 zakłada, że dzielenie w C++ zawsze daje wynik rzeczywisty, a o rodzaju dzielenia decyduje tu typ T podany przy tworzeniu obiektu.