继承中的非虚成员函数
来源:互联网 发布:windows改变图标 编辑:程序博客网 时间:2024/04/30 02:11
都是在公共继承的前提下。类成员函数包括常用的两种。非虚函数和虚函数。非虚函数是静态绑定,虚函数是动态绑定。
继承中的非虚函数(一般不用,都是在迷糊中错用)
这种情况下,调用哪个函数与指针类型有关,如果指针类型是子类类型,则调用子类的函数,如果是父类的类型调用父类的函数
1,类D会不会自己复制一个和类A一模一样的print函数呢?
通过程序可以说明:继承体系中,子类继承自父类的函数,他们指向同一个函数入口,即他们共享父类的函数
比如下面代码:
#include <iostream>using namespace std;class B{public:void print(){ static int num=1;cout << a<<" "<<num<<endl;num++;}B():a(10){}public:int a;};class D:public B{public:D():a(20){}public:int a;};void main(){B b;b.print();//10 1D d;d.print(); //输出为10 2}
2如果子类有同名的函数,(不是同类型),相当于父类同名函数被隐藏了,子类无法调用父类的函数了。
#include <iostream>using namespace std;class B{public:void print(){ static int num=1;cout << a<<" "<<num<<endl;num++;}B():a(10){}public:int a;};class D:public B{public:void print(int i){cout << i<<endl;}D():a(20){}public:int a;};void main(){B b;b.print();//10 1D d;//d.print(); //出错,不能调用父类的同名函数,相当于被隐藏d.print(100);//100}
以上讨论的都是在继承中非虚函数,是静态绑定。
0 0
- 继承中的非虚成员函数
- 继承中的静态成员函数
- 继承中的同名成员变量和函数
- 类成员函数继承(virtual、非virtual)
- C++ 类成员函数继承(virtual、非virtual)
- 类成员函数继承(virtual、非virtual)
- 类成员函数继承(virtual、非virtual)
- C++ 类成员函数继承(virtual、非virtual)
- 继承中的同名成员变量和同名成员函数
- 静态成员函数怎么引用该类中的非静态成员
- 类中的静态成员函数访问非静态成员变量
- C++中的继承关系、访问限定符,六个默认成员函数以及菱形继承和虚继承
- 深入理解C++对象模型-成员函数的本质以及虚函数的实现(非虚继承)
- 构造函数和一般成员函数在继承中的区别
- 【继承与多态】C++:继承中的赋值兼容规则,子类的成员函数,虚函数(重写),多态
- 【继承与多态】C++:继承中的赋值兼容规则,子类的成员函数,虚函数(重写),多态
- 子类重载父类的非虚成员函数是否对从父类中继承且使用该成员函数的方法的行为产生影响
- 子类重载父类的非虚成员函数是否对从父类中继承且使用该成员函数的方法的行为产生影响
- 浏览器缓存详解:expires,cache-control,last-modified,etag详细说明
- Android NDK 开发教程二:概述
- hadoop集群搭建过程中所遇问题总结
- iOS开发-NSData与NSMutableData使用与分析
- ios view的创建过程
- 继承中的非虚成员函数
- Eclipse 插件
- CCI 9.4 集合的所有子集
- 看《软件测试技术大全:测试基础 流行工具 项目实践(第二版)》。。
- ios Game-Center 开发 part1
- hdu-1811 Rank of Tetris 并查集+拓扑
- Yii 不完全解决方案(一)
- 使用ubuntuliveCD重新安裝grub2
- wikioi1128 导弹拦截(理解思路)