二进制兼容更改返回类型C ++

詹·李

我对二进制兼容性有疑问。我有A类,其中包括一个公共方法foo()和一个属性字符串_foo;

const string foo() {return _foo;}

当我改变为

const string& foo(){return _foo;}

它仍然是二进制兼容的吗?谢谢你的帮助!

马特·彼得森(Mats Petersson)

返回字符串的副本实际上将执行以下操作:

string s = foo();

编译器生成机器代码时,将类似于以下内容:

string s;
foo(&s);

自然,如果您更改返回类型的类型,则s需要适当修改指向的指针因此,不能,您不能更改返回类型并保持二进制兼容性(并且几乎可以肯定不会编译,因为该函数的签名已更改-> differentnet混乱的名称->“未定义的引用”)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使返回类型与具有相同擦除二进制数的泛型兼容吗?

在C ++中更改参数名称时的二进制兼容性

在C#中的二进制反序列化期间更改类型

C / C ++中基础的二进制更改

二进制运算参数类型字符串与类型字符串不兼容

从二进制搜索树C ++返回引用

更改二进制文件(C)中的值

RuntimeWarning:numpy.dtype大小已更改,可能表明二进制不兼容

在Java中使用静态方法更改类以进行接口的二进制兼容性

类型数组的二进制运算

二进制搜索始终返回-`

Keras返回二进制结果

二进制读数返回零

C / C ++,对象在平台之间是二进制兼容的吗?

通过更改兼容的API向库添加新的依赖关系是否会影响二进制兼容性?

Visual-C ++-2017二进制文件与VC ++-2015是否兼容?

用不同的C ++编译器构建的二进制文件和库如何兼容?

Ceylon 1.2二进制兼容性

保持与先前版本的二进制兼容性

Ubuntu LTS二进制文件与Debian兼容吗?

特征和接口是否二进制兼容?

实现与二进制兼容性

关于Linux的二进制兼容性

Visual Studio代码二进制兼容性

Dllimport/PInvoke 二进制兼容性

关于“二进制兼容性”的问题

QISKIT错误-numpy.ndarray大小更改,可能表明二进制不兼容。预期从C标头获得88,从PyObject获得80

ValueError:numpy.ufunc的大小已更改,可能表明二进制不兼容。预期从C标头获得216,从PyObject获得192

C中的二进制除法