#include <iostream>
using namespace std;
class A
{
public:
int x,y;
char* str;
//Default Constructor
A(){}
//Constructor
A(int a, int b, char* s){
cout<<"initialising\n";
x = a;
y = b;
str = new char[10];
str = s;
}
//Destructor
~A(){}
//Overloaded assignment operator
const A& operator=(const A& obj)
{
cout<<"Invoking Assignment Operator\n";
x = obj.x;
y = obj.y;
str = new char[10];
str = obj.str;
//return *this;
}
};
ostream& operator<<(ostream& os, const A& obj)
{
os <<"X="<< obj.x<<" Y="<<obj.y<<" Str="<<obj.str<<"\n";
return os;
}
int main()
{
A c(3,4,"Object C");
cout<<c;
A d, e, f;
d = e = f = c; //Assignment operator invoked 3 times
cout<<e;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQQp7CiAgICBwdWJsaWM6CiAgICAgICAgaW50IHgseTsKICAgICAgICBjaGFyKiBzdHI7CgogICAgICAgIC8vRGVmYXVsdCBDb25zdHJ1Y3RvcgogICAgICAgIEEoKXt9CgogICAgICAgIC8vQ29uc3RydWN0b3IKICAgICAgICBBKGludCBhLCBpbnQgYiwgY2hhciogcyl7CiAgICAgICAgICAgIGNvdXQ8PCJpbml0aWFsaXNpbmdcbiI7CiAgICAgICAgICAgIHggPSBhOwogICAgICAgICAgICB5ID0gYjsKICAgICAgICAgICAgc3RyID0gbmV3IGNoYXJbMTBdOwogICAgICAgICAgICBzdHIgPSBzOwogICAgICAgIH0KCiAgICAgICAgLy9EZXN0cnVjdG9yCiAgICAgICAgfkEoKXt9CgogICAgICAgIC8vT3ZlcmxvYWRlZCBhc3NpZ25tZW50IG9wZXJhdG9yCiAgICAgICAgY29uc3QgQSYgb3BlcmF0b3I9KGNvbnN0IEEmIG9iaikKICAgICAgICB7CiAgICAgICAgICAgIGNvdXQ8PCJJbnZva2luZyBBc3NpZ25tZW50IE9wZXJhdG9yXG4iOwogICAgICAgICAgICB4ID0gb2JqLng7CiAgICAgICAgICAgIHkgPSBvYmoueTsKICAgICAgICAgICAgc3RyID0gbmV3IGNoYXJbMTBdOwogICAgICAgICAgICBzdHIgPSBvYmouc3RyOwoKICAgICAgICAgICAgLy9yZXR1cm4gKnRoaXM7CiAgICAgICAgfQp9OwoKb3N0cmVhbSYgb3BlcmF0b3I8PChvc3RyZWFtJiBvcywgY29uc3QgQSYgb2JqKQp7CiAgICBvcyA8PCJYPSI8PCBvYmoueDw8IiBZPSI8PG9iai55PDwiIFN0cj0iPDxvYmouc3RyPDwiXG4iOwogICAgcmV0dXJuIG9zOwp9CgppbnQgbWFpbigpCnsKICAgIEEgYygzLDQsIk9iamVjdCBDIik7CiAgICBjb3V0PDxjOwoKICAgIEEgZCwgZSwgZjsKICAgIGQgPSBlID0gZiA9IGM7ICAvL0Fzc2lnbm1lbnQgb3BlcmF0b3IgaW52b2tlZCAzIHRpbWVzCiAgICBjb3V0PDxlOwp9