继承中的函数覆盖
来源:互联网 发布:淘宝如何开直通车省钱 编辑:程序博客网 时间:2024/06/05 19:35
分俩种情况来考虑:
1,虚函数。
只用函数在基类中被声明为虚函数,那么任何通过基类类型的指针对该函数的调用都是合法的,至于调用的是基类中还是派生类中的函数,则依具体情况。
举例: class Base{
public:
virtual int fcn();
};
class D1:public Base{
public:
//hides fcn in the base;this fcn is not virtual
int fcn(int); //parameter list differs from fan in Base
//D1 inherits definition of Base::fcn()
};
class D2:public D1{
public:
int fcn(int); //nonvirtual function hides D1::fcn(int)
int fcn(); //redefines virtual fan from Base
};
Base bobj; D1 d1obj; D2 d2obj;
Base *bp1 = &bobj, *bp2 = &d1obj, *bp3 = &d2obj;
bp1->fun(); //ok:virtual call,will call Base::fcn at run time
bp2->fun(); //ok:virtual call,will call Base::fcn at run time
bp3->fun(); //ok:virtual call,will call D2::fcn at run time
2,非虚函数。
在基类和派生类中使用同一名字的成员函数,其行为与数据成员一样:在派生类作用域中派生类成员将屏蔽基类成员。即使函数原型不同,基类成员也会被屏蔽。
举例:class Base{
int memfun();
};
class Derived : public Base{
int memfun(int); //hides memfun in the base
};
Derived d; Base b;
b.memfcn(); //calls Base::memfcn
d.memfcn(10); //calls Derived::memfun
d.memfcn(); //error:memfcn with no arguments is hidden
d.Base::memfcn(); //ok:calls Base::memfcn
- 继承中的函数覆盖
- c++继承中的函数覆盖规则
- 继承中的覆盖
- Java继承中的方法覆盖
- Java中的继承、重载、覆盖
- JAVA中的继承和覆盖
- 继承中的隐藏和覆盖
- 单一继承下无虚函数覆盖__虚函数表中的虚函数指针的获取
- 单一继承下无虚函数覆盖__虚函数表中的虚函数指针的获取(二)
- c++ 继承中的覆盖,隐藏,虚拟继承
- C++ 继承中的覆盖,隐藏,虚拟继承
- C++中的函数覆盖
- java-(继承、子父类中的变量的特点、子父类中函数的特点-覆盖、)
- C++继承:同名隐藏、覆盖,虚函数
- C++继承:同名隐藏、覆盖,虚函数
- C++继承:同名隐藏、覆盖,虚函数
- 继承类的重载函数及覆盖
- C++继承:同名隐藏、覆盖,虚函数
- ubuntu下配置VLC服务器
- Asp.Net在回发时候GridView无法取得数据
- 获取当前系统中的Spring applicationContext.
- Android虚拟机内存可以这样优化一把
- Js 实现目录收缩效果
- 继承中的函数覆盖
- 二分查找 java代码
- Linux快捷键之强制关闭
- 有趣的鼠标中键
- 关于图标的一点理解
- linux /boot/grub/menu.ls
- error: invalid storage class for…
- Linux虚拟机挂载共享文件夹[share…
- 关于minicom