重载、覆盖、多态与函数隐藏
2005-12-23 21:03
316 查看
n
如果派生类的函数与基类的函数同名,但是参数不同。此时,若基类无virtual关键字,基类的函数将被隐藏。(注意别与重载混淆,虽然函数名相同参数不
同应称之为重载,但这里不能理解为重载,因为派生类和基类不在同一名字空间作用域内。这里理解为隐藏)
n
如果派生类的函数与基类的函数同名,但是参数不同。此时,若基类有virtual关键字,基类的函数将被隐式继承到派生类的vtable中。此时派生类
vtable中的函数指向基类版本的函数地址。同时这个新的函数版本添加到派生类中,作为派生类的重载版本。但在基类指针实现多态调用函数方法时,这个新
的派生类函数版本将会被隐藏。
n 如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual关键字。此时,基类的函数被隐藏。(注意别与覆盖混淆,这里理解为隐藏)。
n 如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数有virtual关键字。此时,基类的函数不会被“隐藏”。(在这里,你要理解为覆盖哦^_^)。
如果派生类的函数与基类的函数同名,但是参数不同。此时,若基类无virtual关键字,基类的函数将被隐藏。(注意别与重载混淆,虽然函数名相同参数不
同应称之为重载,但这里不能理解为重载,因为派生类和基类不在同一名字空间作用域内。这里理解为隐藏)
n
如果派生类的函数与基类的函数同名,但是参数不同。此时,若基类有virtual关键字,基类的函数将被隐式继承到派生类的vtable中。此时派生类
vtable中的函数指向基类版本的函数地址。同时这个新的函数版本添加到派生类中,作为派生类的重载版本。但在基类指针实现多态调用函数方法时,这个新
的派生类函数版本将会被隐藏。
n 如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual关键字。此时,基类的函数被隐藏。(注意别与覆盖混淆,这里理解为隐藏)。
n 如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数有virtual关键字。此时,基类的函数不会被“隐藏”。(在这里,你要理解为覆盖哦^_^)。
相关文章推荐
- C++中的虚函数,多态,覆盖隐藏重载
- 重载、覆盖、多态与函数隐藏--1
- 重载、覆盖、多态与函数隐藏---2
- c++中多态函数以及函数重载,覆盖,遮蔽(隐藏)的区别
- 重载、覆盖、多态与函数隐藏(转贴,值得一看)
- [C++基础]重载、覆盖、多态与函数隐藏(2)
- 重载、覆盖、多态与函数隐藏(转贴,值得一看)
- [C++基础]重载、覆盖、多态与函数隐藏
- [C++基础]重载、覆盖、多态与函数隐藏(3)
- 重载、覆盖、多态与函数隐藏---2
- C++中的虚函数,多态,覆盖隐藏重载
- [C++基础]重载、覆盖、多态与函数隐藏(4)
- 重载、覆盖、多态与函数隐藏(1)
- [C++基础]重载、覆盖、多态与函数隐藏(1)
- 函数的多态、重载、覆盖与隐藏(总结)
- 重载、覆盖、多态与函数隐藏
- 重载、覆盖、多态与函数隐藏(2)
- [C++基础]重载、覆盖、多态与函数隐藏(2)
- C++中的虚函数,多态,覆盖隐藏重载
- 重载、覆盖、多态与函数隐藏(3)