如何将C++中PIMPL指向实现的指针描述为一个长尾?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1158个文字,预计阅读时间需要5分钟。
目录+二进制兼容性+功能实现细节+编译依赖+动态配置功能实现方法+二进制兼容性+概述+二进制兼容性是指数据库文件升级后,使用该数据库的应用程序无需重新编译即可继续使用。
目录
- 二进制兼容性
- 功能实现细节隐藏
- 编译依赖
- 动态配置功能的实现方法
二进制兼容性
①.概述
二进制兼容是指当库文件升级后所有使用该库的应用程序不必重新编译,其本质就是类的内存布局不变。使用 pimpl 方法设计类可以实现二进制兼容的目的。
②.类成员更改后的内存布局
原始类定义:
class demoClass { private: int a; int b; };
类更改后的定义:
class demoClass { private: char c; int a; int b; };
②.pimpl 下类的内存布局
class demoClass { private: class demoClassImpl; demoClassImpl* impl; }; class demoClass::demoClassImpl { public: int a; int b; };
如上图所示,无论类的实现类的数据成员如何变化,类的布局始终不变。
本文共计1158个文字,预计阅读时间需要5分钟。
目录+二进制兼容性+功能实现细节+编译依赖+动态配置功能实现方法+二进制兼容性+概述+二进制兼容性是指数据库文件升级后,使用该数据库的应用程序无需重新编译即可继续使用。
目录
- 二进制兼容性
- 功能实现细节隐藏
- 编译依赖
- 动态配置功能的实现方法
二进制兼容性
①.概述
二进制兼容是指当库文件升级后所有使用该库的应用程序不必重新编译,其本质就是类的内存布局不变。使用 pimpl 方法设计类可以实现二进制兼容的目的。
②.类成员更改后的内存布局
原始类定义:
class demoClass { private: int a; int b; };
类更改后的定义:
class demoClass { private: char c; int a; int b; };
②.pimpl 下类的内存布局
class demoClass { private: class demoClassImpl; demoClassImpl* impl; }; class demoClass::demoClassImpl { public: int a; int b; };
如上图所示,无论类的实现类的数据成员如何变化,类的布局始终不变。

