________________________________________
#include <iostream>
using namespace std;
class A
{
public:
A(int X=0,int Y=0):x(X),y(Y){} //construktor conversions
void write();
operator int(){return (x+y)/2;} //conversion operator
private:
int x,y;
friend A add(A,A);
};
void A::write()
{
cout<<"x="<<x<<" y="<<y<<endl;
}
A add(A a1,A a2)
{
A a3;
a3.x=a1.x+a2.x;
a3.y=a1.y+a2.y;
return a3;
}
int dual(int number)
{
return 2*number;
}
int main()
{ A o1(1,2),o2(6,4),o3(1);
//construktor`s test of correctness
cout << "o1" << endl;
o1.write();
cout << "o2" << endl;
o2.write();
cout << "o3" << endl;
o3.write();
//normal use
A o4=add(o1,o2);
cout << "o4=o1+o2" << endl;
o4.write();
A o5=add(o1,5);
//construktor conversions
cout << "o5=o1+5" << endl;
o5.write();
cout<<"dual="<<dual(6)<<endl;
//conversion operator
cout<<"dual o2="<<dual(o2)<<endl;
return 0;
}
Brak komentarzy:
Prześlij komentarz