niedziela, 29 grudnia 2013

C++ class conversion / c++ konwersja

Next step- conversion
________________________________________
#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