#include <iostream>
using namespace std;
// Base class
class Shape {
protected:
int width;
int height;
public:
Shape(int w,int h){
width=w;
height=h;
}
// pure virtual function providing interface framework.
virtual int getArea() = 0;
};
// Derived classes
class Rectangle: public Shape {
public:
int getArea() {
return (width * height);
}
};
class Triangle: public Shape {
public:
int getArea() {
return (width * height)/2;
}
};
int main(void) {
Rectangle Rect(5,7);
Triangle Tri(8,5);
// Print the area of the object.
cout << "Total Rectangle area: " << Rect.getArea() << endl;
// Print the area of the object.
cout << "Total Triangle area: " << Tri.getArea() << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgogCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKLy8gQmFzZSBjbGFzcwpjbGFzcyBTaGFwZSB7CgkgcHJvdGVjdGVkOgogICAgICBpbnQgd2lkdGg7CiAgICAgIGludCBoZWlnaHQ7CiAgICAgIAogICBwdWJsaWM6CiAgIAogICBTaGFwZShpbnQgdyxpbnQgaCl7CiAgIAl3aWR0aD13OwogICAJaGVpZ2h0PWg7CiAgIH0KICAgCiAgICAgIC8vIHB1cmUgdmlydHVhbCBmdW5jdGlvbiBwcm92aWRpbmcgaW50ZXJmYWNlIGZyYW1ld29yay4KICAgICAgdmlydHVhbCBpbnQgZ2V0QXJlYSgpID0gMDsKICAgICAgCiAgCn07CiAKLy8gRGVyaXZlZCBjbGFzc2VzCmNsYXNzIFJlY3RhbmdsZTogcHVibGljIFNoYXBlIHsKICAgcHVibGljOgogICAgICBpbnQgZ2V0QXJlYSgpIHsgCiAgICAgICAgIHJldHVybiAod2lkdGggKiBoZWlnaHQpOyAKICAgICAgfQp9OwoKY2xhc3MgVHJpYW5nbGU6IHB1YmxpYyBTaGFwZSB7CiAgIHB1YmxpYzoKICAgICAgaW50IGdldEFyZWEoKSB7IAogICAgICAgICByZXR1cm4gKHdpZHRoICogaGVpZ2h0KS8yOyAKICAgICAgfQp9OwogCmludCBtYWluKHZvaWQpIHsKICAgUmVjdGFuZ2xlIFJlY3QoNSw3KTsKICAgVHJpYW5nbGUgIFRyaSg4LDUpOwogCiAgIAogICAKICAgLy8gUHJpbnQgdGhlIGFyZWEgb2YgdGhlIG9iamVjdC4KICAgY291dCA8PCAiVG90YWwgUmVjdGFuZ2xlIGFyZWE6ICIgPDwgUmVjdC5nZXRBcmVhKCkgPDwgZW5kbDsKCiAgIAogICAKICAgLy8gUHJpbnQgdGhlIGFyZWEgb2YgdGhlIG9iamVjdC4KICAgY291dCA8PCAiVG90YWwgVHJpYW5nbGUgYXJlYTogIiA8PCBUcmkuZ2V0QXJlYSgpIDw8IGVuZGw7IAoKICAgcmV0dXJuIDA7Cn0=
prog.cpp: In function ‘int main()’:
prog.cpp:40:22: error: no matching function for call to ‘Rectangle::Rectangle(int, int)’
Rectangle Rect(5,7);
^
prog.cpp:25:7: note: candidate: constexpr Rectangle::Rectangle(const Rectangle&)
class Rectangle: public Shape {
^~~~~~~~~
prog.cpp:25:7: note: candidate expects 1 argument, 2 provided
prog.cpp:25:7: note: candidate: constexpr Rectangle::Rectangle(Rectangle&&)
prog.cpp:25:7: note: candidate expects 1 argument, 2 provided
prog.cpp:41:21: error: no matching function for call to ‘Triangle::Triangle(int, int)’
Triangle Tri(8,5);
^
prog.cpp:32:7: note: candidate: constexpr Triangle::Triangle(const Triangle&)
class Triangle: public Shape {
^~~~~~~~
prog.cpp:32:7: note: candidate expects 1 argument, 2 provided
prog.cpp:32:7: note: candidate: constexpr Triangle::Triangle(Triangle&&)
prog.cpp:32:7: note: candidate expects 1 argument, 2 provided