#include <iostream>
using namespace std;
class Fruit
{
private:
string m_name;
string m_color;
public:
Fruit(const string& name, const string& color) :
m_name(name), m_color(color) {};
const string& getName() const { return m_name; }
const string& getColor() const { return m_color; }
};
class Apple : public Fruit
{
private:
double m_fiber;
public:
Apple(const string& name, const string& color, const double& fiber) :
Fruit(name, color),
m_fiber(fiber) {};
const double& getFiber() const { return m_fiber; }
friend ostream& operator<<(ostream& out, const Apple& apple)
{
out << "Apple (" << apple.getName() << "," << apple.getColor() << "," << apple.getFiber()<<")"<<'/n';
return out;
}
};
int main()
{
const Apple a("Red delicious", "red", 7.3);
std::cout << a;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgRnJ1aXQKewpwcml2YXRlOgogICAgc3RyaW5nIG1fbmFtZTsKICAgIHN0cmluZyBtX2NvbG9yOwoKcHVibGljOgogICAgRnJ1aXQoY29uc3Qgc3RyaW5nJiBuYW1lLCBjb25zdCBzdHJpbmcmIGNvbG9yKSA6CiAgICAgICAgbV9uYW1lKG5hbWUpLCBtX2NvbG9yKGNvbG9yKSB7fTsKCiAgICBjb25zdCBzdHJpbmcmIGdldE5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KICAgIGNvbnN0IHN0cmluZyYgZ2V0Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9Cgp9OwoKY2xhc3MgQXBwbGUgOiBwdWJsaWMgRnJ1aXQKewpwcml2YXRlOgogICAgZG91YmxlIG1fZmliZXI7CgpwdWJsaWM6CiAgICBBcHBsZShjb25zdCBzdHJpbmcmIG5hbWUsIGNvbnN0IHN0cmluZyYgY29sb3IsIGNvbnN0IGRvdWJsZSYgZmliZXIpIDoKICAgICAgICBGcnVpdChuYW1lLCBjb2xvciksCiAgICAgICAgbV9maWJlcihmaWJlcikge307CgogICAgY29uc3QgZG91YmxlJiBnZXRGaWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fZmliZXI7IH0KCiAgICBmcmllbmQgb3N0cmVhbSYgb3BlcmF0b3I8PChvc3RyZWFtJiBvdXQsIGNvbnN0IEFwcGxlJiBhcHBsZSkKICAgIHsKICAgICAgICBvdXQgPDwgIkFwcGxlICgiIDw8IGFwcGxlLmdldE5hbWUoKSA8PCAiLCIgPDwgYXBwbGUuZ2V0Q29sb3IoKSA8PCAiLCIgPDwgYXBwbGUuZ2V0RmliZXIoKTw8IikiPDwnL24nOwogICAgICAgIHJldHVybiBvdXQ7CiAgICB9Cn07CgoKaW50IG1haW4oKQp7CiAgICAgY29uc3QgQXBwbGUgYSgiUmVkIGRlbGljaW91cyIsICJyZWQiLCA3LjMpOwoKICAgICBzdGQ6OmNvdXQgPDwgYTsKCiAgICAgcmV0dXJuIDA7Cgp9Cg==