C++的类与C++的结构体本质上没有什么不同,唯一不同的可能即是在编译期默认的成员访问全乡不同。当我们new 一个类时,在heap中申请了一块内存区域,
用于保存类的实体,并且调用了类的构造函数。当我们调用delete时,调用了析构函数,并调用了heap内存块释放函数。
今天随便写了一个简单的类,并对其进行了反汇编分析,由此记录下来,环境如下:
操作系统:win7 sp1 x86_64
调试器:OllyDbg 2.0
编译环境:Visual Studio 2012
文件有三个,classtest.h classtest.cpp main.cpp, 代码如下:
/*
---- classtest.h ----
author : ez
date : 2015/7/4
describe : declare classtest.
*/
#ifndef _CLASSTEST_H_
# define _CLASSTEST_H_
#include <string>
using std :: string;
# define gatter(___FIELDNAME, ___TYPE) \
___TYPE get##___FIELDNAME () { \
return (this -> ___FIELDNAME); \
}
# define setter(___FIELDNAME, ___TYPE) \
void set##___FIELDNAME (___TYPE _val) { \
this -> ___FIELDNAME = _val; \
}
class classtest {
private:
int _x;
in