Jun 22, 2024
Instrument with function makeSoundAccordion with its own implementation of makeSoundInstrument with a virtual makeSound functionAccordion and override makeSoundmakeSound, ensuring the derived class version executesclass Instrument {
public:
virtual void makeSound() {
std::cout << "Instrument is playing" << std::endl;
}
};
class Accordion : public Instrument {
public:
void makeSound() override {
std::cout << "Accordion is playing" << std::endl;
}
};
Instrument* instrument = new Accordion();
instrument->makeSound(); // Outputs: Accordion is playing
= 0 in its declaration, forcing derived classes to implement itInstrument to make makeSound a pure virtual functionPiano which must implement makeSoundclass Instrument {
public:
virtual void makeSound() = 0; // Pure virtual function
};
class Piano : public Instrument {
public:
void makeSound() override {
std::cout << "Piano is playing" << std::endl;
}
};
makeSound will cause compile-time errorsInstrument pointersmakeSound for each, demonstrating polymorphismInstrument* instruments[2];
instruments[0] = new Accordion();
instruments[1] = new Piano();
for (int i = 0; i < 2; ++i) {
instruments[i]->makeSound();
}
// Outputs: Accordion is playing, Piano is playing