Given the following class: class Foo{ int* bar; int foobar;p…

Given the following class: class Foo{ int* bar; int foobar;public: Foo(); ~Foo(); Foo(const Foo& original); Foo& operator=(const Foo& original);};Foo::Foo(){ foobar = 10; bar = new int[foobar];}Foo::~Foo(){ delete[] bar;}Foo::Foo(const Foo& original){ foobar = original.foobar; bar = original.bar;}Foo& Foo::operator=(const Foo& original){ *this = original;} Indicate whether each member of the “Big Three” is implemented correctly or not.