class Base {
public:
Base() {
print();
}
virtual ~Base() {

}
void show()
{
print();
}
virtual void print() {
std::cout << "Base::print" << std::endl;
}
};

class Drived : public Base {
public:
Drived() {
print();
}
~Drived() {

}

virtual void print()override
{
std::cout << "Drived::print" << std::endl;
}
};
int main(int argc, char *argv[])
{

Drived *b = new Drived();
b->show();
delete b;
return a.exec();
}

res:

Base::print
Drived::print
Drived::print

两次Drived::print