-
使用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;
}