roz*_*ina 0 c++ pointers function-pointers
今天我了解到函数指针和数据指针不一样,因此彼此不兼容(为什么函数指针和数据指针在C/C++中不兼容?).然而,我的问题是,不同的函数(非成员)指针是否相互兼容(以相同的方式实现).
在代码中:
typedef void(*FuncPtr0)();
typedef void(*FuncPtr1)(int);
FuncPtr0 p0;
FuncPtr1 p1;
p0 = reinterpret_cast<FuncPtr0>(p1); // will this always work, if p1 really
p0(); // points to a function of type FuncPtr0
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
n3376 5.2.10/6
函数指针可以显式转换为不同类型的函数指针.通过指向函数类型(8.3.5)的函数调用函数的效果是未定义的,该函数类型与函数定义中使用的类型不同.除了将"指向T1的指针"的prvalue转换为"指向T2的指针"类型(其中T1和T2是函数类型)并返回其原始类型产生原始指针值之外,这种指针转换的结果未指定.