C++覆盖和隐藏

C++ 覆盖 与 隐藏

隐藏

指的是:子类继承父类属性(函数),并且自身也有与父类同名的属性(函数),这是编译器就会在子类中对父类属性做一个隐藏,我们并不能通过子类对象直接点出父类相关属性或函数,必须要在特定位置上加上父类作用域才可以。

覆盖

指的是:子类继承父类虚函数,并且对其重写,这时,我们用一个父类指针来接收子类对象地址。并通过这个父类指针来调用这个函数时,调用的就是子类重写后的函数了。这操作成为覆盖---子类重写后的函数地址将父类虚函数地址进行覆盖。不过这一切的一切都是通过函数指针(虚函数指针vfptr)来完成的。关于多态底层实现细节详细信息请见:

注意:

  • 隐藏只要求的时父类子类有同名函数,所以也就是说,可以发生重载

  • 覆盖中父类子类都是对同一函数,这个函数时一摸一样的,参数列表,返回值,函数名......

原文地址:https://www.cnblogs.com/yuanshixiao/p/13986248.html