gpt4 book ai didi

c++ - 向函数添加具有默认值的参数是否会破坏 ABI?

转载 作者:可可西里 更新时间:2023-11-01 17:37:51 26 4
gpt4 key购买 nike

标题说明了一切。我将向具有默认值的类的成员函数添加一个参数。该参数属于非平凡类型。这会破坏 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 在符号名称中对 [成员] 函数的参数类型进行编码。默认参数通常实现为在调用点产生的临时对象。如果这些是为使用的 ABI 所做的选择,添加默认参数将更改 ABI。是否属于这种情况,您需要根据所使用的特定 ABI 来确定。

关于c++ - 向函数添加具有默认值的参数是否会破坏 ABI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41763930/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com