【发布时间】:2017-01-20 12:39:44
【问题描述】:
标题说明了一切。我将向具有默认值的类的成员函数添加一个参数。该参数属于非平凡类型。这会破坏 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:我做了自己的测试,它工作正常。只是不能确定
【问题讨论】:
-
这个名字说明了一切。默认参数是arguments,与函数类型(特别是函数参数)无关。
-
“这会破坏 ABI 吗?” 对不起?
-
do_that_stuff将在新旧编译中得到不同的名称 - 我认为这违反了我对 ABI 兼容性的定义。
标签: c++ backwards-compatibility abi