从汇编层面深度剖析C++基本对象布局
作者:网络转载 发布时间:[ 2014/7/2 11:24:38 ] 推荐标签:Net 软件开发
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;
}
|
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11热门文章
常见的移动App Bug??崩溃的测试用例设计如何用Jmeter做压力测试QC使用说明APP压力测试入门教程移动app测试中的主要问题jenkins+testng+ant+webdriver持续集成测试使用JMeter进行HTTP负载测试Selenium 2.0 WebDriver 使用指南