【基础】通过取地址调用虚函数的两种方式--C++源代码(VS2008)
来源:互联网 发布:moto 860联通网络 编辑:程序博客网 时间:2024/05/16 00:58
#include <iostream>
using namespace std;
class Base
{
public:
virtual void func_1()
{
cout<<"it is Base::func_1"<<endl;
}
virtual void func_2()
{
cout<<"it is Base::func_2"<<endl;
}
};
/* 直接调用对应类中的函数 */
typedef void (Base::*FUNC_1)();
/* 直接调用对应的函数 */
typedef void (*FUNC_2)();
int main()
{
Base b;
FUNC_1 pfunc_1 = &Base::func_1;
(b.*pfunc_1)();
FUNC_2 pfunc_2 = (FUNC_2)*(long*)*(long*)(&b);
pfunc_2();
FUNC_2 pfunc_2_1 = (FUNC_2)*((long*)*(long*)(&b)+1);
pfunc_2_1();
system("pause");
return 0;
}
using namespace std;
class Base
{
public:
virtual void func_1()
{
cout<<"it is Base::func_1"<<endl;
}
virtual void func_2()
{
cout<<"it is Base::func_2"<<endl;
}
};
/* 直接调用对应类中的函数 */
typedef void (Base::*FUNC_1)();
/* 直接调用对应的函数 */
typedef void (*FUNC_2)();
int main()
{
Base b;
FUNC_1 pfunc_1 = &Base::func_1;
(b.*pfunc_1)();
FUNC_2 pfunc_2 = (FUNC_2)*(long*)*(long*)(&b);
pfunc_2();
FUNC_2 pfunc_2_1 = (FUNC_2)*((long*)*(long*)(&b)+1);
pfunc_2_1();
long** pfunc = (long**)(&b);
((FUNC_2)*(*pfunc))();
system("pause");
return 0;
}
阅读全文
0 0
- 【基础】通过取地址调用虚函数的两种方式--C++源代码(VS2008)
- 函数调用的两种方式PASCAL调用方式和C调用方式
- 飛飛(五十九)纯虚函数以及通过两种方式调用
- 两种获取虚函数地址的方式
- 函数调用时基本的参数传递方式有传值与传地址两种
- 函数指针的两种调用方式
- c++虚函数调用的两种方式
- 两种方式获取Thrift调用的客户端IP地址
- 函数的参数调用 取地址
- 通过函数的地址调用函数
- C语言函数调用三种方式:传值调用,引用调用和传地址调用
- C语言函数调用三种方式:传值调用,引用调用和传地址调用
- C语言函数调用三种方式:传值调用,引用调用和传地址调用
- C语言函数调用三种方式:传值调用,引用调用和传地址调用
- C语言函数调用三种方式:传值调用,引用调用和传地址调用
- C语言函数调用三种方式:传值调用,引用调用和传地址调用
- 有无C标签在JSP页面的取值(两种方式)
- [c++]如何取重载函数的地址
- 分页
- window下 安装 php redis
- 3-1
- UE4蓝图节点翻译---Add Timeline...
- recyclerview显示图片
- 【基础】通过取地址调用虚函数的两种方式--C++源代码(VS2008)
- 3-2
- 冒泡排序java实现
- FFMPEG 图像拉伸缩放及数据格式转换
- 商品管理系统案例
- 29 岁电工自学编程行骗,上万人被骗,涉案资金 1.6 亿
- 趣图:机器学习的课堂现场
- 阿里云在广东宣布新一轮降价行动:ECS、RDS、CDN和游戏盾
- linux命令之查看当前shell环境变量-env