class Material
{
public:
void foo()
{
cout << "Class Material";
}
};
class Unusual_Material : public Material
{
public:
void foo()
{
cout << "Class Unusual_Material";
}
};
int main()
{
Material strange = Unusual_Material();
strange.foo(); //outputs "Class Material"
return 0;
}
Я бы хотел, чтобы в результате на консоли отображался "Class Unusual_Material". Есть ли способ добиться этого? В моей программе есть класс Material, из которого происходят другие более конкретные материалы. Метод Material :: foo () представляет метод в Material, который подходит для большинства материалов, но иногда необходимо определить другой foo () для материала с необычными свойствами.
Все объекты в моей программе содержат поле материала. В случае, если им назначен необычный материал, я бы хотел, чтобы вызывался производный, необычный foo.
Это, вероятно, либо довольно просто, либо невозможно, но я не могу понять это в любом случае.
Спасибо