Laboratorijas
darbs 17. Klases šablons
Šajā laboratorijas darbā divu klašu vietā tiks izveidots viens klašu šablons.
#include <iostream>
using namespace std;
class skaitlis1
{
string x;
int y;
public:
skaitlis1 (const string &a, int b) { x=a; y=b; };
void print ()
{
cout << x << endl;
cout << y << endl;
};
void change (const string &a, int b) { x=a; y=b; };
};
class skaitlis2
{
int x;
string y;
public:
skaitlis2 (int a, const string &b) { x=a; y=b; };
void print ()
{
cout << x << endl;
cout << y << endl;
};
void change (int a, const string &b) { x=a; y=b; };
};
int main()
{
skaitlis1 s1 ("pieci", 5);
s1.print ();
s1.change ("desmit", 10);
s1.print ();
cout << endl;
skaitlis2 *s2 = new skaitlis2 (1, "viens");
s2->print ();
s2->change (2, "divi");
s2->print ();
delete s2;
system ("pause");
return 0;
}
Izdruka uz ekrāna:
pieci
5
desmit
10
1
viens
2
divi
Šeit tiek darbinātas 2
klases abas sastāv no vienas simbolu virknes un no viena vesela skaitļa tikai
apgrieztā secībā. Bez tam abās klasēs ir definēts konstruktors, kā arī metodes print() un change().
2. Izveidot klašu šablonu skaitlis, lai tas pilnībā aizvietotu abas klases skaitlis1 un skaitlis2.
3. Pielietot operatoru typedef, lai nosauktu šablonu precizētos tipus klašu vārdos, lai funkcija main() paliktu tāda pati, kā sākotnējā variantā.
lab17a.cpp
(Piedāvātajā variantā operators typedef apzināti tiek pielietots tikai vienas klases (skaitlis2) precizēšanai, otras klases precizēšana notiek funkcijā main())
Lai izpildītu šo laboratorijas darbu līdz galam (lab17a.cpp), pēc klases skaitlis2 parauga typedef jāpielieto arī otrai klasei.