更改独立类中公共(public)非虚拟非内联重载方法的顺序是否会破坏 ABI?
之前:
class MyFinalClass
{
public:
// ...
void doSomething(char c, int i, int n);
void doSomething(char c, int i);
// ...
};
之后:
class MyFinalClass
{
public:
// ...
void doSomething(char c, int i);
void doSomething(char c, int i, int n);
// ...
};
谢谢!
最佳答案
函数通过它们的名称和签名链接,而不是通过它们在类中的位置链接。所以不,你没有破坏 ABI。
虚函数是另一回事,因为它们是通过它们在虚表中的位置(通常)链接起来的。如果您始终如一地重新编译依赖于定义顺序的 header 的每个文件,这将不是问题,但如果类存在于库中,则可能是一个问题。
关于c++ - 在独立类中重新排序公共(public)非虚拟方法是否会破坏 ABI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10536896/