标题说明了所有.我将为具有默认值的类的成员函数添加一个参数.这个论点属于非平凡的类型.这会破坏ABI吗?假设我的新库版本将会出现M.m.0
,并且应该可以作为所有使用的链接应用程序的替代品M.m-1.x
.
示例代码:
// These are some classes: base and child : public base /* Version 1.2.3 */ class foo() { public: void do_that_stuff(const std::string a); } /* Version 1.3.0 */ class foo() { public: void do_that_stuff(const std::string a, const base& b = base()); }
PS:我做了自己的测试,并且它正在运行.只是不能确定
大多数C++ ABI在符号名称中编码[member]函数的参数类型.默认参数通常实现为在调用点处召唤的临时对象.如果这些是为所使用的ABI所做的选择,则添加默认参数将更改ABI.无论是否是这种情况,您都需要确定使用的特定ABI.