<C++>C++中四类成员在内存中存储的方式
2014-01-31 21:04
218 查看
有时我们在调代码的时候会遇到一些很诡异的问题,比如结果不稳定,表现出一定的随机性,此时在排除框架设计上的问题外,可能需要考虑内存上的一些问题。最基础的就是知道各类数据成员及方法在内存中存储的方式。下面就复习一下内存中的一些常识:
C++中存在的四类成员有:静态数据成员和非静态数据成员、静态函数和非静态函数;
静态数据成员为所有该类的对象共享一份,放置在程序的静态存储区;
非静态数据成员每个对象中有自己专属的一份,作为对象专有的数据成员;
静态函数与非静态函数都存储在程序的代码段,所有类成员共享一个实体,区别在于静态成员函数缺少this指针,无法对类的普通成员进行访问。
成员函数不管是否为静态在内存中只有一份,不隶属于任何对象,构成对象的只有非静态数据成员,非静态成员函数与对象的关系就是绑定,绑定的中介就是this指针。关于内存中各类存储区域的划分见下一篇文章。
C++中存在的四类成员有:静态数据成员和非静态数据成员、静态函数和非静态函数;
静态数据成员为所有该类的对象共享一份,放置在程序的静态存储区;
非静态数据成员每个对象中有自己专属的一份,作为对象专有的数据成员;
静态函数与非静态函数都存储在程序的代码段,所有类成员共享一个实体,区别在于静态成员函数缺少this指针,无法对类的普通成员进行访问。
成员函数不管是否为静态在内存中只有一份,不隶属于任何对象,构成对象的只有非静态数据成员,非静态成员函数与对象的关系就是绑定,绑定的中介就是this指针。关于内存中各类存储区域的划分见下一篇文章。
相关文章推荐
- <C++>内存存储区域划分
- 【数字图像处理】<纯C++>读取、裁剪、缩放、旋转和存储8位bmp灰度图像
- boost::future<T>::then & Autobahn C++ 内存占用高问题分析:
- C++成员函数在内存中的存储方式
- <转载自刘佳ID:freedom0203和waret> C++中成员初始化列表的使用
- ArrayList、List<T>、HashSet<T>、LinkedList<T>各自优点和缺点,Dictionary<K,V>的内部存储数据方式有什么特殊的?
- 【数字图像处理】YUV420转RGB并BMP存储<纯C++实现>
- &lt;转载自刘佳ID:freedom0203和waret&gt; C++中成员初始化列表的使用
- Android数据存储五种方式总结<转载>
- <转载>浅谈C/C++的浮点数在内存中的存储方式
- C++:vector<vector<int> > a, int b[M][L].两种方式,那种效率高。 注:都采用下标寻址方式。
- 【数字图像处理】<纯C++>读取、裁剪、缩放、旋转和存储8位bmp灰度图像
- c++11 使用c++风格的cast: static_cast<type>(expression) const_cast<type> dynamic_cast reinterpret_cast
- C++中#include <> 与#include ""的区别
- C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区
- C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区
- C++成员函数的存储方式
- C++ 中dynamic_cast<>的使用方法
- <转>c#调用C++DLL类型转换
- Redis 存储字符串和对象<转>