c++继承中的函数覆盖规则
来源:互联网 发布:淘宝客返利api 编辑:程序博客网 时间:2024/05/16 13:44
问题:如果如图的继承方式,类B会不会自己复制一个和类A一模一样的test函数呢?
测试数据:
#include<iostream>usingnamespace std; class A{public: void test(){ static int a=1; cout<<a++<<endl; }}; classB:public A{public:}; int main(){ A a; B b; a.test(); b.test(); return 0;}
结果:
答案:由此可以说明,继承体系中,子类继承自父类的函数,他们指向同一个函数入口,即他们共享父类的函数.
相关知识点:
1.子类和父类共享父类的static变量.
2.子类有与父类的同名数据
a: 子类和父类返回值参数相同,函数名相同,有virtual关键字,则由对象的类型决定调用哪个函数。
b:子类和父类只要函数名相同,没有virtual关键字,则子类的对象没有办法调用到父类的同名函数,父类的同名函数被隐藏了,也可以强制调用父类的同名函数class::funtion_name。
c:子类和父类参数不同,函数名相同,有virtual关键字,则不存在多态性,子类的对象没有办法调用到父类的同名函数,父类的同名函数被隐藏了,也可以强制调用父类的同名函数class::funtion_name。
d:子类和父类返回值不同,参数相同,函数名相同,有virtual关键字,则编译出错errorC2555编译器不允许函数名参数相同返回值不同的函数重载。
3.子类在任何时候都可以通过域名调用父类数据
例如: B b. b.A::test();
注意:由第二条可知,子类和父类是不能构成重载关系的,只能覆盖,而且是子类与父类数据同名即造成父类数据隐藏.(这里的数据包括成员函数和成员变量).
0 0
- c++继承中的函数覆盖规则
- 继承中的函数覆盖
- [c++]继承覆盖与函数重载
- c语言中的函数覆盖
- 【继承与多态】C++:继承中的赋值兼容规则,子类的成员函数,虚函数(重写),多态
- 【继承与多态】C++:继承中的赋值兼容规则,子类的成员函数,虚函数(重写),多态
- 继承中的覆盖
- C#中的继承规则
- Java继承中的方法覆盖
- Java中的继承、重载、覆盖
- JAVA中的继承和覆盖
- 继承中的隐藏和覆盖
- C++_继承名字覆盖
- 单一继承下无虚函数覆盖__虚函数表中的虚函数指针的获取
- 单一继承下无虚函数覆盖__虚函数表中的虚函数指针的获取(二)
- c++ 继承中的覆盖,隐藏,虚拟继承
- C++ 继承中的覆盖,隐藏,虚拟继承
- 初识c#---继承和继承关系中的构造函数
- c++中构造函数
- JAVA String.format 方法使用介绍
- OpenGL 4.0 GLSL 用多个光照模型
- 在启动activity时添加动画效果
- MFC MDI和SDI美化----之客户区美化
- c++继承中的函数覆盖规则
- lucene4.6索引创建和搜索例子
- The controlfile header block returned by the OS has a sequence number that is too old
- angualrJS支持的event
- 做注册的验证,在服务器端处理,客服端ajax异步提交数据
- Debug Assertion Failed! f:\sp\vctools\vc7libs\ship\atlmfc\src\mfc\dlgdata.cpp Line: 42
- java 获取路径工具类
- 粒子群优化算法
- 挖掘x-forwarded-for注入