虚实函数相互调用和函数重写覆盖的一些心得
来源:互联网 发布:破解路由器的软件 编辑:程序博客网 时间:2024/04/30 15:05
注:标题中所说的实函数是指普通成员函数
A为基类,继承关系如图
A
|
B
|
C
|
D
伪代码如下:
B *pb = new C;
pb->f1();
总结:
1.调用从基类继承来的成员函数,在子类中未有重写覆盖(overriding),函数内部的this指针为基类类型
2.调用虚函数,当有重写覆盖时,虚函数内部保存的指针为子类类型,当未有重写覆盖上时规则同上
3.调用普通成员函数时,this指针可能上升(从子类转为基类)
4.调用虚函数时,this指针可能上升也可能下降(从基类转为子类),但是不会下降到子类实体对象以下
测试代码如下:
#include <iostream.h>
//--------------------------------------------------------------------------------
class A
{
public:
void f1(){
cout<<"A::f1()"<<endl;
f2();
}
virtual void f2(){
cout<<"A::f2()"<<endl;
f3();
}
void f3(){
cout<<"A::f3()"<<endl;
f4();
}
void f4(){
cout<<"A::f4()"<<endl;
}
};
//--------------------------------------------------------------------------------
class B: public A
{
public:
/*
void f1(){
cout<<"B::f1()"<<endl;
f2();
}
*/
virtual void f2(){
cout<<"B::f2()"<<endl;
f3();
}
void f3(){
cout<<"B::f3()"<<endl;
f4();
}
};
//--------------------------------------------------------------------------------
class C: public B
{
public:
void f1(){
cout<<"C::f1()"<<endl;
f2();
}
virtual void f2(){
cout<<"C::f2()"<<endl;
f3();
}
/*
void f3(){
cout<<"C::f3()"<<endl;
f4();
}
*/
void f4(){
cout<<"C::f4()"<<endl;
}
};
//--------------------------------------------------------------------------------
class D: public C
{
public:
void f1(){
cout<<"D::f1()"<<endl;
f2();
}
virtual void f2(){
cout<<"D::f2()"<<endl;
f3();
}
void f3(){
cout<<"D::f3()"<<endl;
}
};
//--------------------------------------------------------------------------------
int main(void)
{
B *pb = new C;
pb->f1();
return 0;
}
- 虚实函数相互调用和函数重写覆盖的一些心得
- 函数重载(OverLoading)和函数的覆盖(重写)Overriding
- 关于函数调用的一些心得
- 函数的相互调用
- flex 和js 函数的相互调用
- 类成员函数的重载、重写、和覆盖区别
- 类成员函数的重载、重写、和覆盖区别
- C++中函数重载、隐藏、覆盖和重写的区别
- 实函数傅里叶变换的奇偶虚实特性
- LUA函数和C函数的相互调用
- 构造函数和析构函数的相互调用
- LUA函数和C函数的相互调用
- C函数和C++函数相互调用
- C函数和C++函数相互调用
- 函数之间的相互调用
- 函数重载、重写与覆盖
- C++函数覆盖与重写
- LUA和C之间的函数相互调用
- 深挖洞与广积粮
- 将军和驴子
- 解决blackboard building block上传后无法运行的问题
- 计算机图形学中直线连接算法的Javascript实现
- 今天才抽空把头像图片传上去~~~~~背景是 香港的维多利亚海湾 ~~还不错,不过有点黑.哈,下午好晒呢~
- 虚实函数相互调用和函数重写覆盖的一些心得
- 从这里开始
- 程序员的养生之道
- java Web开发必备资料整理
- 聊天系统的工作原理
- 如何绑定Command的快捷键到上下文
- 国内网站WebServer和所用Cache类型统计
- 钢丝帘布裁断机的主传动系统
- WebService 之 WSDL文件 讲解