当前位置: 首页 > news >正文

网站建设与管理实训心得怎么写seo优化seo外包

网站建设与管理实训心得怎么写,seo优化seo外包,软装设计师证,速成网站建设C 对象模型 C Object Model 文章目录 C 对象模型 C Object ModelC语言的数据及函数C的类C对象模型 C语言的数据及函数 C语言中,数据和函数是分开声明的。 数据 typedef struct point2d {float x;float y; } Point2d;函数 打印Point2d的数值 void Point2d_print…

C++ 对象模型 C++ Object Model

文章目录

  • C++ 对象模型 C++ Object Model
    • C语言的数据及函数
    • C++的类
    • C++对象模型

C语言的数据及函数

C语言中,数据和函数是分开声明的。

  • 数据
typedef struct point2d
{float x;float y;
} Point2d;
  • 函数

打印Point2d的数值

void Point2d_print(const Point2d * pd)
{printf("(%f, %f)", pd->x, pd->y);
}

C++的类

同样实现C语言的功能,C++中可以进行如下定义

class Point2d
{Point2d(float x, float y):m_x(x), m_y(y){}print(){printf("(%f, %f)", m_x, m_y);}private:float m_x;float m_y;
};

问题:Point2d从C到C++,内存布局上有啥变化呢?

答案是没有变化。
本例中,C++ 中的数据成员和C中一样,不一样的是C++中多了一个非静态成员函数print,但非静态成员函数与数据成员是分离的,并不占用类的大小。也就是说print函数的调用实际为print(Point2d* pd),就如同C语言的Point2d_print调用。

C++内存布局的额外负担有virtual引起,主要包好虚函数(virtual function)和虚基类(virtual base class)。

C++对象模型

C++中,
类数据成员有两种:静态(static) 和 非静态(nonstatic)
类成员函数有三种:静态函数(static)、非静态函数(nonstatic) 和 虚函数(virtual)

C++对象模型:

  1. 非静态(nonstatic)数据成员在类内部
  2. 静态(static)在类外部
  3. 静态函数(static)和非静态函数(nonstatic)在类外部
  4. 虚函数(virtual):
    a. 每个类产生一堆指向虚函数的指针,放在虚表(virtual table, vtbl)
    b. 每个类对象添加一个指向虚表的指针(vptr)。
    c. 每个类的type_info(用于支持RTTI)也由虚表指定,一般位于第一个slot处。
class Point2d
{Point2d(float x, float y):m_x(x), m_y(y),m_pointCount(2){}virtual ~Point2d(){}static int getPointCount(){return m_pointCount;}print(){printf("(%f, %f)", m_x, m_y);}private:float m_x;float m_y;static int m_pointCount;
};

上述代码的C++对象模型如下

+---------------+
|  float m_x;   |            virtual table
+---------------+
|  float m_y;   |          +---------------+
+---------------+          |               |      +--------------------+
|  vptr Point2d +---------->               +------> type_info(RTTI     |
+---------------+          +---------------+      +--------------------+|               |      +--------------------+Point2d pt2;            |               +------> Point2d::~Point2d()|+---------------+      +--------------------++-------------------------------------+       +------------------------------------+
| static int Point2d::m_pointCount    |       | Point2d::Point2d(float x, float y) |
+-------------------------------------+       +------------------------------------++-------------------------------------+       +------------------------------------+
| static int Point2d::getPointCount() |       | Point2d::print()                   |
+-------------------------------------+       +------------------------------------+

Reference:

  1. 深度探索C++对象模型
http://www.dinnco.com/news/647.html

相关文章:

  • wordpress 中文手册宁波企业网站seo
  • 做图片网站百度seo关键词排名查询工具
  • 木马设计公司官网seo怎么做优化方案
  • 做类似淘宝的网站需多少资金seo引擎搜索
  • 金乡网站建设多少钱怎么创建自己的网站
  • 那个网站可以做链接域名查询ip
  • 做ppt好的模板下载网站有哪些内容网络推广网站建设
  • 旅游局网站的建设情况搜索引擎原理
  • 网站站内关键词优化在百度怎么创建自己的网站
  • wordpress商品按钮代码上海seo推广外包
  • php网站开发优化在线培训平台有哪些
  • 石家庄疫情最新消息封城seo推广编辑
  • 交互性强的网站做游戏推广怎么找客户
  • 泊头在哪做网站比较好360竞价推广客服电话
  • 嘉兴制作网站软件百度竞价推广开户内容
  • 广西柳州网站建设深圳网站建设优化
  • 做礼品贸易好的网站商务网站如何推广
  • 编程网站有哪些seo是什么?
  • 广州南沙建设网站软文兼职
  • 有经验的企业网站建设一键注册所有网站
  • 做网站内容字体多少pt陕西网站设计
  • 想花钱做网站怎么做沈阳专业网站seo推广
  • 海外网络专线免费seo知识是什么意思
  • 网站运营与规划自动友链网
  • 网站建设主要问题及建议推广seo公司
  • 站酷网怎么样免费发seo外链平台
  • 兰州需要做网站的公司有哪些雅思培训机构哪家好机构排名
  • 洛阳做网站哪家好网站服务公司
  • 企业网站建设应该怎么做seo课程排行榜
  • 如何进入wordpress宁波正规seo推广公司