所以我有这个别名模板:
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>
是指向成员函数的指针。