C/C++编程:C++类封装的布局成本
2021/5/3 14:25:30
本文主要是介绍C/C++编程:C++类封装的布局成本,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
C++中的类
C中的:
typedef struct point3d{ float x; float y; float z; }Point3D; #define Point3d_print(pd) \ printf("%g, %g, %g", pd->x, pd->y, pd->z); // ***
与C++中的
class Point3D{ public: Point3D(float x = 0.0, float y = 0.0, float z = 0.0) :_x(x), _y(y), _z(z){} float x() { return _x;} float y() { return _y;} float z() { return _z;} //---- private: float _x; float _y; float _z; };
加上封装后的布局成本
将Point3D封装成C++的类之后,布局成本增加了多少?
没有增加:
- 三个数据成员直接包含在每一个类对象(class object)中,就像 C中的结构体一样
- 虽然成员函数包含在了类声明中,但是不会出现在类对象中。
- 每一个非内联成员函数只会诞生一个函数实体
- 每一个内联成员函数(可以拥有0或者1个定义)会在每一个使用者身上产生一个函数实体
C++在布局以及存取时间上主要的额外负担是由vritual引用的。包括:
- 虚函数(virtual function)机制:用于支持一个有效率的执行期绑定
- 虚基类(vritual base class):用于实现“多次出现在继承体系中的基类,有一个单一而被共享的实体”
此外,还有一些多重继承下的额外负担,发生在“一个派生类和其第二会在后继的基类的转换”之间。
总之,C++不一定比C慢
这篇关于C/C++编程:C++类封装的布局成本的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-23DevExpress 怎么实现右键菜单(Context Menu)显示中文?-icode9专业技术文章分享
- 2024-12-22怎么通过控制台去看我的页面渲染的内容在哪个文件中呢-icode9专业技术文章分享
- 2024-12-22el-tabs 组件只被引用了一次,但有时会渲染两次是什么原因?-icode9专业技术文章分享
- 2024-12-22wordpress有哪些好的安全插件?-icode9专业技术文章分享
- 2024-12-22wordpress如何查看系统有哪些cron任务?-icode9专业技术文章分享
- 2024-12-21Svg Sprite Icon教程:轻松入门与应用指南
- 2024-12-20Excel数据导出实战:新手必学的简单教程
- 2024-12-20RBAC的权限实战:新手入门教程
- 2024-12-20Svg Sprite Icon实战:从入门到上手的全面指南
- 2024-12-20LCD1602显示模块详解