T
timid
I'm attempting to learn how to use inheritance in C++, the following
program should print the word 'Orange' on the screen but it prints
'Apple' instead. Can someone explain what is wrong?
#include <iostream>
class Fruit
{
public:
virtual const char* get_name() {return "(nothing)";}
};
class Apple: public Fruit
{
public:
const char* get_name() {return "Apple";}
};
class Orange: public Fruit
{
const char* get_name() {return "Orange";}
};
int main()
{
std::cout << "Test inheritation" << std::endl;
Fruit *myfruit1 = new Apple();
Fruit *myfruit2 = new Orange();
Fruit *myfruit3 = new Apple();
std::cout << "myfruit1 = " << myfruit1->get_name() <<
std::endl; // Prints "Apple"
std::cout << "myfruit2 = " << myfruit2->get_name() <<
std::endl; // Prints "Orange"
std::cout << "myfruit3 = " << myfruit3->get_name() <<
std::endl; // Prints "Apple"
// The following does not work
std::cout << "Now change myfruit3 from Apple to Orange..." <<
std::endl;
*myfruit3 = *myfruit2;
// Prints "Apple" but should print "Orange"
std::cout << "myfruit3 = " << myfruit3->get_name() << std::endl;
// Wait for a keypress
std::cin.get();
delete myfruit1;
delete myfruit2;
delete myfruit3;
}
program should print the word 'Orange' on the screen but it prints
'Apple' instead. Can someone explain what is wrong?
#include <iostream>
class Fruit
{
public:
virtual const char* get_name() {return "(nothing)";}
};
class Apple: public Fruit
{
public:
const char* get_name() {return "Apple";}
};
class Orange: public Fruit
{
const char* get_name() {return "Orange";}
};
int main()
{
std::cout << "Test inheritation" << std::endl;
Fruit *myfruit1 = new Apple();
Fruit *myfruit2 = new Orange();
Fruit *myfruit3 = new Apple();
std::cout << "myfruit1 = " << myfruit1->get_name() <<
std::endl; // Prints "Apple"
std::cout << "myfruit2 = " << myfruit2->get_name() <<
std::endl; // Prints "Orange"
std::cout << "myfruit3 = " << myfruit3->get_name() <<
std::endl; // Prints "Apple"
// The following does not work
std::cout << "Now change myfruit3 from Apple to Orange..." <<
std::endl;
*myfruit3 = *myfruit2;
// Prints "Apple" but should print "Orange"
std::cout << "myfruit3 = " << myfruit3->get_name() << std::endl;
// Wait for a keypress
std::cin.get();
delete myfruit1;
delete myfruit2;
delete myfruit3;
}