所以我有这个别名模板:
template<class MemberT, class ClassT>
using make_member_ptr = MemberT ClassT::*;
我注意到make_member_ptr<int(char, long), class_type>
是一样的int(class_type::*)(char, long)
。之前,我认为指向成员函数的指针与指向数据成员的指针完全不同。
指向成员函数的指针与指向数据成员的指针有何不同?
我唯一能发现的是,如果成员函数是虚拟的,则通过指向基函数的指针调用将调用派生函数,这对于非函数成员的指针来说不是问题。
我问的原因是我正在处理指向成员的通用指针,我想知道我必须注意什么以及指向成员函数与数据成员的指针的特殊情况。
之前,我认为指向成员函数的指针与指向数据成员的指针完全不同。
你的想法是正确的。
指向成员函数的指针与指向数据成员的指针有何不同?
它们是不同的类型。它们可能有不同的尺寸。指向成员函数的指针可以指向成员函数。指向数据成员的指针可以指向数据成员。这种区别类似于函数指针和数据指针之间的区别。
make_member_ptr<int(char, long), class_type>
是一个指向成员函数的指针。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)