output 3 virtuality

output 3 virtuality

#include<iostream>
using namespace std;
class BC{
public:
void show_class(){
show1();
show2();
}
private:
void show1(){
cout << "#1 BC\n";
}
virtual void show2(){
cout << "#2 BC\n";
}
};
class DC : public BC{
private:
void show1(){
cout << "#1 DC\n";
}
virtual void show2(){
cout << "#2 DC\n";
}
};
class DDC : public DC{
private:
void show1(){
cout << "#1 DDC\n";
}
virtual void show2(){
cout << "#2 DDC\n";
}
};
int main()
{
BC b;
b.show_class(); // #1 BC, #2 BC 
cout << endl;
DC d;
d.show_class(); // #1 BC , #2 DC
cout << endl;
DDC dd;
dd.show_class(); // #1 BC , #2 DDC 
cout << endl;   // show_class is in BC class, so it shows its show1() function because of no virtuality
return 0;
}