Rozwiązania - przeciążanie operatorów

powrót

//Ćwiczenie 1
#include<iostream>
#include<cstdlib>
using namespace std;

class klasa{
	public:
		klasa(int m)
		{
			minuty = m;
		}
		
		void operator+(klasa obj)  //obiekt obiekt
		{
			minuty+=obj.zwroc_minuty();
		}
		
		void operator+(int m) //obiekt liczba
		{
			minuty+=m;
		}
		
		int zwroc_minuty()
		{
			return minuty;
		}
		void wypisz()
		{
			cout<<minuty/60<<" h "<<minuty%60<<" min";
		}
	private:
		int minuty;
};

int main()
{
	klasa A(12), B(100); 
	A + B; 
	A.wypisz();
	
	cout<<endl;
	system("pause");
	return 0;
}

//Ćwiczenie 2
#include<iostream>
#include<cstdlib>
using namespace std;

class klasa{
	public:
		int operator[](char znak) 
		{
			return (int)znak;
		}
};

using namespace std;

int main()
{
	klasa A;
	cout<<A['a'];
	
	cout<<endl;
	system("pause");
	return 0;
}

//Ćwiczenie 3
#include<iostream>
#include<cstdlib>
using namespace std;

class klasa{
	public:
		void operator<<(char *tekst)
		{
			cout<<tekst;
		}
};

int main()
{
	klasa wypisz;
	wypisz<<"Jakiś tekst";
	
	cout<<endl;
	system("pause");
	return 0;
}

//Ćwiczenie 4
#include<iostream>
#include<cstdlib>
using namespace std;

class klasa{
	public:
		void operator=(unsigned int n)
		{
			liczba = n;
		}
		void operator / (unsigned int &a)
		{
			a>>=1;
			liczba>>=1;
		}
		
		unsigned int wypisz()
		{
			return liczba;
		}
		
	private:
		int liczba;
};

int main()
{
	klasa object;
	unsigned int a = 5;
	
	object = 4;
	
	object/a;
 
	cout<<object.wypisz()<<" "<<a<<endl;
	
	system("pause");
	return 0;
}