Laboratorijas darbs 16. Operatoru pārslogošana

Šajā laboratorijas dažas klases funkcijas tiks aizvietotas ar pārslogotiem operatoriem.

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

#include <iostream>

using namespace std;

 

class skaitlis

{

    string x;

    int y;

public:   

    skaitlis (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; };

};

 

int main()

{

    skaitlis s1 ("pieci", 5);

    s1.print ();

    s1.change ("desmit", 10);

    s1.print ();

    system ("pause");

    return 0;

}

Izdruka uz ekrāna:

pieci

5

desmit

10

Klasei skaitlis ir definēts konstruktors, kā arī metodes print() un change().

2.      metodes print() vietā pārslogot operatoru << (vienīgais veids, kā to izdarīt, ir pārslogot to kā ārēju funkciju).

3.      metodes change() vietā pārslogot operatoru += gan tipam string, gan tipam int, tādējādi viena change() izsaukuma vietā būs 2 attiecīgi operatora += izsaukumi (so operatoru var pārslogot abos veidos – gan kā neatkarīgu, gan klases funkciju, bet vēlams to darīt otrajā veidā).

Funkcija main() pēc funkciju nomaiņas ar pārslogotajiem operatoriem izskatīsies šādi:

int main()

{

    skaitlis s1 ("pieci", 5);

    cout << s1;

    s1 += "desmit";

    s1 += 10;

    cout << s1;

    system ("pause");

    return 0;

};

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