C++中隐藏和覆盖有什么区别?

网上看到了两个版本:

1.父类和子类的函数名字相同,那就是隐藏

2.父类和子类的函数名字相同,参数相同的,如果是虚函数,那么就是覆盖,否则就是隐藏;参数列表不同的,都是隐藏

求教那种是正确,个人偏向第二种

父类和子类的函数名字相同,参数相同的,如果是虚函数,那么就是覆盖,否则就是隐藏
这个说法是正确的。
所以覆盖,就是
Base *b = new Derived();
b->func(); 如果调用的是 derived的func就是覆盖了,如果是base的func,就是隐藏。