c++ - 指向成员函数的指针与指向数据成员的指针有何不同?

标签 c++ pointer-to-member

所以我有这个别名模板:

template<class MemberT, class ClassT>
using make_member_ptr = MemberT ClassT::*;

我注意到 make_member_ptr<int(char, long), class_type>int(class_type::*)(char, long)相同.之前,我认为指向成员函数的指针与指向数据成员的指针是完全不同的。

指向成员函数的指针与指向数据成员的指针有何不同?

我唯一能找到的是,如果成员函数是虚函数,通过指向基函数的指针调用将调用派生函数,这对于非函数成员指针来说不是问题。

我问的原因是我正在处理指向成员的通用指针,我想知道我必须注意什么以及指向成员函数和数据成员的指针的特殊情况。

最佳答案

Before, I was thinking that a pointer to a member function is completely different to a pointer to a data member.

你想对了。

How do pointers to member functions differ from pointers to data members?

它们是不同的类型。它们可能有不同的尺寸。指向成员函数的指针可以指向一个成员函数。指向数据成员的指针可以指向一个数据成员。区别类似于函数指针和数据指针之间的区别。

make_member_ptr<int(char, long), class_type>是指向成员函数的指针。

关于c++ - 指向成员函数的指针与指向数据成员的指针有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54503321/

相关文章:

c++ - 可以连接到 MySQL 数据库的非 GPL 库?

C++通过函数指针错误调用成员函数

c++ - C++中指向数据成员的指针的值

c++ - 使用指向自身的指针初始化成员变量

c++ - 跨 C++ 模块传递指向成员函数的指针

c++ - OpenGL C++ 深度缓冲区不工作

c++ - 面向对象的C++编程中的复制,引用和指针的用例和首选项

c++ - 魔鬼 iluErrorString() 导致访问冲突

C++ 类空类大小 1 字节

c++ - 直接使用成员函数的函数指针