Qt框架中为什么使用了大量的xxPrivate数据类?

Qt框架中为什么使用了大量的xxPrivate数据类?这么做的目的是什么?(为了解决什么问题)

回答:

  1. 封装数据成员,避免提供头文件时将细节暴露出去;当后期发现库存在严重缺陷,需要增加或修改成员变量,用户的软件也一定需要重新编译;
  2. 二进制兼容。二进制兼容指的是,升级或者修复bug后,不需要依赖这个库的程序重新,编译程序的功能不会被破坏;

哪些常见做法会破坏二进制兼容:

  1. 给函数增加默认参数,现有的可执行文件无法传递这个参数
  2. 增加虚函数,造成vtbl表的排列变化
  3. 增加默认模板类型参数
  4. 改变 enum 的值,把 enum Color { Red = 3 }; 改为 Red = 4。这会造成错位。当然,由于 enum 自动排列取值,添加 enum 项也是不安全的,除非是在末尾添加
  5. 增加或减少类的数据成员

参考:
https://www.jianshu.com/p/87febb375969

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值