我碰到this https://stackoverflow.com/a/71870413/12002570其中指出:
成员函数指针不是指针。指向非成员函数(包括静态成员函数)的指针是指针。
上面的引用似乎表明指向非静态成员函数的指针不是指针。
同样,我读到here https://stackoverflow.com/a/2402607/12002570:
成员指针是与普通指针不同的类型类别。
我的问题是上述引用在技术上(正式根据标准)正确吗?我的意思是我们使用这个词,指向非静态成员函数的“指针”。但如果它们实际上不是指针,那么为什么首先使用术语“指针”呢?我的理解是,这是因为虽然“指向成员函数的指针”在很多方面与普通指针不同,但它们在一方面仍然与普通指针相似,即它们指向某个东西(意味着保存地址)。
我也尝试过:
std::cout<<std::is_pointer_v<void(A::*)()><<std::endl;
这使0
确认指向非静态成员函数的指针不被视为指针。
所引用的相关陈述似乎已通过标准中的以下陈述进行了验证。
From dcl.mptr#3 的注释 https://timsong-cpp.github.io/cppwp/n4659/dcl.mptr#3:
[ 注:另请参见[expr.unary]和[expr.mptr.oper]。“指向成员的指针”类型与“指针”类型不同,也就是说,指向成员的指针仅由指向成员声明符语法的指针声明,而绝不会由指针声明符语法声明。 C++ 中没有“成员引用”类型。 ——《尾注》
并从基本化合物#3 https://timsong-cpp.github.io/cppwp/n4659/basic.compound#3:
...除了指向静态成员的指针之外,引用“指针”的文本不适用于指向成员的指针...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)