取成员函数地址

原文地址

取函数地址:

空 福(){}<型名 F>
空 打印地址(F f){64型 地址=(64)f;
  输出<<地址<<"\n";
}

打印地址(1);

但,对成员函数则难了.说不能转换为整64型.要用位转(c++20)来取成员函数地址.

<类 至,类 从>
型名 允许如型<
    的大小()==的大小()&&
    是可平凡复制值<>&&
    是可平凡复制值<>,>
//支持常式需要编译器
转换位(常 从&)无异
{
    静断(是可平凡构造值<>,"该实现要求必须可平凡构造");

    至 汇;
    复制内存(&,&,的大小());
    中 汇;
}

不能把成员函数地址,转成整/空,而应用位转.

<类 T,允许如型<!是成员指针值<T>,>=0>
动 的地址(T&x)->推导()
{
    中 的地址(x);
}<类 T,允许如型<是成员指针值<T>,>=0>
动 的地址(T p)->T
{
    中 p;
}<型名 F>
空 打印函数地址(F 常&f){
    动 p=::的地址(f);
    动 a=转换位<数组<,的大小(p)>>(p);
    动 s=(a.数据(),a.大小());// 将它作为键
    格式::打印("函数键:{}\n",s);
}

这样,就可保存地址了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值