从汇编层面深度剖析C++基本对象布局

发表于:2014-7-02 09:53

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:海枫    来源:51Testing软件测试网采编

#
DoNet
分享:
  1. C++基本对象的组成
  尽管C++社区最近十年兴起元编程范式和模板技术,面向对象编程仍是C++语言最基础,也是最重要的一种编程范式(paradigms)。C++的对象,将过程式的数据结构,以及操作在它们之上的函数,绑定到一个单一的语法单元,那就是类(class)。C++世界里,活生生的个体联系就是所有类的对象所进行的消息传递,对象协作而构成千变万化的世界。但对象的内部结构,对象的产生和消亡,数据成员和函数成员的结构,困扰了无数初学者。
  C++基本对象由以下几方面元素组成:
  对象数据成员(非静态数据成员)
  类数据成员(静态数据成员)
  函数成员
  静态函数成员
  这里,我们不考虑类的单继承,多重继承以及虚函数等复杂的特性。
  下面我们对C++基本对象进行抽丝剥茧,深入分析对象的内存布局,与之相关的静态变量,成员函数。
  2. 一个简单的例子
  为简单起见,本文以class point为例子,它包含构造函数,析构函数,函数成员,对象变量,类变量和静态成员函数等语法结构。它的代码如下:
class point
{
public:
point(int x, int y)
{
this->x = x;
this->y = y;
ins_cnt++;
}
~point()
{
ins_cnt--;
}
static int get_instances()
{
return ins_cnt;
}
point & move(int addx, int addy)
{
this->x += addx;
this->y += addy;
return *this;
}
private:
int x, y;
static int ins_cnt;
};
int point::ins_cnt = 0;
int main()
{
point x(3, 4);
x.move(10, 10);
int p_ins_cnt = point::get_instances();
return 0;
}
31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号