//类的对象管理模型初讲 #include<iostream> using namespace std; class PointA{ private: int x;//占据4个字节大小的内存空间 int y;//占据4个字节大小的内存空间 int z;//占据4个字节大小的内存空间 };//总共占据12个字节 class PointB{ public: PointB(int _x, int _y,int _z){ x = _x; y = _y; z = _z; } void GetX(){ cout << x<< endl;; } void GetY(){ cout << y << endl;; } private: int x; int y; int z; static int c; }; void ProtectA(){ cout << "PointA在内存中的大小是" << sizeof(PointA)<<"个字节" << endl;//打印 12个字节 cout << "PointB在内存中的大小是" << sizeof(PointB) << "个字节" << endl;//打印 12个字节 //运行结果表明 类的静态成员变量,成员函数 不在类中占据内存空间 //本质上,c++编译器对类对象中的成员变量 成员函数 静态成员变量是分开存储的 //非静态成员变量:存储于对象中,与struct变量有相同的内存布局和字节对齐方式 //静态成员变量:存储在全局区 //成员函数(包括静态成员函数):存储在代码区 //C++编译器对普通成员函数的内部处理请看图1 //c++中类其实是C语言中的结构体(存储数据)+全局函数组成的 //c++编译器对类里函数做了特殊处理,每个函数都会隐式传递一个对象指针(本质上就是个结构体指针), //就是通过这个对象指针c++编译器才能找到每个对象里的成员属性 //对于静态成员函数,c++编译器不会为这个函数传递一个对象指针,因为静态成员函数是属于类的 } /* 总结: 1、C++类对象中的成员变量和成员函数是分开存储的。C语言中的内存四区模型仍然有效! 2、C++中类的普通成员函数都隐式包含一个指向当前对象的this指针。 3、静态成员函数、静态成员变量属于类 静态成员函数与普通成员函数的区别 静态成员函数不包含指向具体对象的指针 普通成员函数包含一个指向具体对象的指针 */ void main(){ ProtectA(); system("pause"); }
时间: 2024-10-06 00:07:11