Laboratorijas darbs 17. Klases šablons

Šajā laboratorijas darbā divu klašu vietā tiks izveidots viens klašu šablons.

  1. Atvērt failu lab17.cpp (nepieciešamības gadījumā pievienot rindiņu systempause”);), nokompilēt un darbināt.

#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.