如果只将非虚的、非重载的成员函数添加到类中,是否需要用户重新编译?
Would a user be required to re-compile, if only non-virtual, non-overloading member functions were added to a class?
这只是一个理论问题。我在COM世界遇到过类似的问题,想知道这是否也适用于c++世界。我也意识到我可以用痘痘习语来避免这个问题。
假设我有一个a类版本1。我将头文件和库文件发送给客户端。
然后有一天,我更新了A,增加了一些函数(这些函数不是虚拟的,也不是重载的)。A类现在是版本2。
假设版本2在与版本1相同的环境和设置下编译。
我的理解是在新的库文件中,类A的大小和变量表不会改变。此外,由于没有添加重载函数,客户端不会调用错误的函数。因此,用户不需要重新编译他们的代码。
这个假设有什么缺陷吗?
据我所知没有陷阱。你所描述的概念叫做二进制兼容性。
因为类A的版本2仍然与类A的版本1二进制兼容(据我所知),所以不需要重新编译。KDE Techbase文章提供了一组很好的指导方针(包括示例)来维护二进制兼容性。
http://techbase.kde.org/Policies/Binary_Compatibility_Issues_With_C + +相关文章:
- C++LDAP检查用户是否是特定组的成员
- 如何检查用户是否输入了元音字符?
- 检查用户是否是 Windows 中本地计算机上的管理员C++
- 如何检查用户是否已打开应用程序
- 如何检查用户是否没有输入任何字符串
- 如何检测用户是否进入空格栏
- 检查用户是否在数组中键入辅音
- C 检测用户是否输入字符串而不是INT
- 如何检查用户是否输入了整数
- 如何检查(在运行时)用户是否包含文件
- 如何在Windows7中检查用户是否为管理员
- 如何检查用户是否键入了"yes"字符串
- 如何检查用户是否输入了有效值
- 检查用户是否在倒计时结束前完成了键入
- 如何检查用户是否进行了两次相同的选择
- 如何检查用户是否按下了编辑控件内的键
- 如何确定用户是否已知,是否使用pam_authenticate
- Windows 通用 - 如何检查用户是否已登录到Microsoft帐户
- 如何使用 C++ 桌面应用程序检查用户是否在线
- 请查明用户是否更改了QSpinBox