-
使用virtual关键字在base class中声明virtual function。你可以使用指针在derived class中调用和执行virtual function。
-
“virtual void MakeSound() = 0;”这是一个pure virtual function。
-
有至少一个pure virtual function的class称为abstract class,所以Instrument是一个abstract class。
#include <iostream>
#include <algorithm>using namespace std;class Instrument {
public:virtual void MakeSound() = 0;
};class Accordion: public Instrument {
public:void MakeSound(){cout << "Accordion playing..." << endl;}
};class Piano: public Instrument {
public:void MakeSound(){cout << "Piano playing..." << endl;}
};int main(){Instrument *i1 = new Accordion();// i1->MakeSound();Instrument *i2 = new Piano();// i2->MakeSound();Instrument *instruments[2] = {i1, i2};for(int i = 0; i < 2; i++){instruments[i]->MakeSound();}return 0;
}