Víc*_*dez 11 c++ backwards-compatibility abi
在独立类中更改公共非虚拟非内联重载方法的顺序是否会破坏ABI?
之前:
class MyFinalClass
{
public:
// ...
void doSomething(char c, int i, int n);
void doSomething(char c, int i);
// ...
};
Run Code Online (Sandbox Code Playgroud)
后:
class MyFinalClass
{
public:
// ...
void doSomething(char c, int i);
void doSomething(char c, int i, int n);
// ...
};
Run Code Online (Sandbox Code Playgroud)
谢谢!
Mar*_*som 10
这些功能通过名称和签名来链接,而不是它们在班级中的位置.所以不,你没有打破ABI.
虚函数是另一回事,因为它们是通过它们在vtable(通常)中的位置链接的.如果您始终重新编译依赖于定义顺序的标头的每个文件,这将不会成为问题,但如果该类存在于库中,则可能是一个问题.