一,C/C++内存模型
1.内存模型分类
2.理解函数,代码和内存分配的问题
函数是由一条条的操作指令(代码)组合而成的,其指令可以是定义变量向内存申请空间,或者是操作指令,例如两数相加。
二,C++中类和对象的内存分配模型
1.C++中类和对象
在C语言中,“数据”和“函数”是分开来声明的,也就是说,语言并没有支持“语言和函数”之间的关联性。但是在C++中却提供了“类”来将“数据”和“函数”绑定在了一起。C++中的类由成员变量,静态成员变量,构造函数,成员函数,静态函数和虚函数组成。下面我们来研究组成类的数据和函数是如何在内存中分配的。
2.C++中是如何管理类和对象的
我们首先来定义几个类,然后对下面的代码进行分析。
# include<iostream> using namespace std; /* 定义第一个类:12个字节 */ class C1 { private: int a;// 4 int b;// 4 int c;// 4 }; /* 定义第二个类:12个字节 */ class C2 { private: int a;// 4 int b;// 4 int c;// 4 static int d;// 0 }; /* 定义第三个类:4个字节 */ class C3 { private: int a;// 4 static int b;// 0 public: void setA(int a)// 0 { this->a = a; } int getA()// 0 { return this->a; } static void add()// 0 { C3::b += 100; } }; /* 定义结构体:4个字节 */ struct S1 { int a; static int b; }; int main() { cout << "C1类所占字节数:" << sizeof(C1) << endl; cout << "C2类所占字节数:" << sizeof(C2) << endl; cout << "C3类所占字节数:" << sizeof(C3) << endl; cout << "S1结构体所占字节数:" << sizeof(S1) << endl; return 0; }
3.上述代码结果分析
4.C++成员变量存放在对象中,那么成员函数是如何管理的?
5.上述代码总结
6.this指针
原文:http://www.cnblogs.com/metalsteel/p/6271239.html