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++类封装的布局成本的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程