Laboratorijas
darbs 16. Operatoru pārslogošana
Šajā laboratorijas dažas klases funkcijas tiks aizvietotas ar pārslogotiem operatoriem.
#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.