C++类的存放问题

来源:百度知道 编辑:UC知道 时间:2024/05/31 19:21:40
我有一个疑问??
C++中 我在书读到这样一句话:对象初始化时系统要为它分配内存空间,但这个内存空间只能用于存放 对像的的数据成员,其成员函数不在每个对象中存储副本。
既然这样 1---那成员函数到底被存在哪里呢???我的理解是可能被存在类里,但是类又是被存在哪里呢??
2---我由此想到了C语言里的变量。如int ,char等等,这些被定义的量又是被存在哪里呢?
我认为学好这个东东,知道这些定义的量在内存中的存储方式才能正确的应用它,真正学好它》呵呵~~ 所以想请大家帮小生一个忙,解答我的问题。先在此谢谢看这个问题的老师了!!

大概说一说,不一定对.
系统为每个程序都给出两片可用内存,一片是栈,一片是堆.
直接创建的对象一般都是在栈上的.动态分配的对象都是在堆上的.
栈上分配的对象在作用域结束时会自动销毁,而堆上的对象必须由程序员释放.
而函数不一样,函数属于代码段.有可能直接从硬盘读取,放到内存中.
换言之,一般不用new,malloc分配的话,对象都是在栈上的.
至于类对象,其成员变量也符合这个原则,而且类成员函数是其他普通函数是一样处理的.数据段永远不会存储代码的.

其实这个确实是不同的

int,char是基本的类型(也就char,int,float,double,boolean这5个吧..如果不算符号扩产的话?大概..不敢肯定)..其数据存储在栈上...每次对某个变量做维护..都要重新组织一下..

而类存放在堆上...一个变量只是指向某个对象的引用..并不产生一个新的副本...

其实用一个例子就好理解~~
你建立1个对象..再用一个变量指向这个对象..当其中一个变量的成员数据改变的时候...看看另一个成员数据是否改变~
数组也是一样的~

C++编译器里有很多文件,头文件之类的东西。在它编译时,才会把你的语句翻译成汇编语言。而不是把你写的什么东西放内存里,要是那样,计算机内存10G、100G恐怕也不能支持一个小游戏。好比说你写的int,编译的时候系统会在链接库里找这个定义,找到了才会有定义。这也是为啥你用好多类的时候要包含相应的类的头文件。除非你是研究比编程语言更底层的汇编语言,要不然弄明白这些也没什么用,你只要写好你的语句,让编译器执行后得到你希望的结果就行了。