gpt4 book ai didi

c++ - pimpl设计模式,成员函数需要放在私有(private)类中

转载 作者:搜寻专家 更新时间:2023-10-31 01:44:43 26 4
gpt4 key购买 nike

为了保证pimpl模式的ABI,我们只需要将所有的数据成员都放到“Private class”中就可以了吗?我在一些关于pimpl的介绍中看到,他们也在“私有(private)类”中实现了所有功能,并为“私有(private)类”中的每个函数在导出类上定义了一个“包装函数”,是否有必要?

最佳答案

当您的目标是具有 ABI 兼容性时,那么您需要将所有数据成员变量放在私有(private)类中。

this famous article about c++ ABI compatibility .从他们的做/不做:

  • 您不能更改现有成员函数的签名。您可以添加新方法
  • 你不能在没有虚函数的情况下向类中添加虚函数
  • 您不能添加或更改非静态数据成员,也不能更改它们的顺序

list 还在继续,但这 3 项应该涵盖您的问题。

只要您 100% 确定不会修改私有(private)成员函数,就可以了。如果您希望有所改变,请将他们转移到私有(private)类(class)。我总是期待改变。

关于c++ - pimpl设计模式,成员函数需要放在私有(private)类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23087778/

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