关于类和对象的困惑
如果把类比成做蛋糕的模子,把对象比成从这个模子做出来蛋糕的,用new关键字出来蛋糕是分配在堆里,用声明变量的办法出来的蛋糕会是在栈里,那么系统是怎么知道有这个模子,这个模子是在什么时候加载的,又会在什么时候消失,存放在什么地方啊
没办法,菜人的分少问题不少,希望有人扫肓啊
问题点数:20、回复次数:7Top
1 楼jobs002(Oh! Office)回复于 2006-03-04 08:12:45 得分 5
类在c语言中相当于是结构体,实际上就是复杂数据的组合,你说得系统什么时候加载,什么时候
消失,类既然是模子,系统当人们声明对象的时候会给它分配空间,包括各个成员的初始化,具体的程序是如何运行的,具体系统知道的栈,堆,都是内存,需要处理器进行运行,可以看看汇编语言Top
2 楼jobs002(Oh! Office)回复于 2006-03-04 08:16:26 得分 1
附:
c语言的结构体和c++的类还是有区别的,主要就是c++的类进行了抽象,所以可重用性提高了很多,所以c的结构和c++的类还是有很大区别的(数据隐藏就不说了.....,得分难,给分,谢谢)Top
3 楼njSeeWhy(北海鲲鹏)回复于 2006-03-04 10:09:23 得分 1
当你new一个对象或者定义一个变量时,就要告诉编译器它是什么类型,这不就有模子了吗?干嘛还要装载呀什么的?Top
4 楼houdy(致力于图像/图形领域,成为有思想的程序员)回复于 2006-03-04 14:38:15 得分 2
其实我觉得,由于C++是一种强类型高级计算机寓言,所以在语法上需要明确确定类型,也就是在编译阶段(Compile),类型显得非常重要,如果类型不对,编译器就会报错。但是到了运行时(Run-time)类型已经显得不太重要的。在创建对象的过程中,我们只需要知道对象占多少内存空间,和一个被叫做"构造函数"的函数用来初始化新创建的对象。这就是"动态创建(Dynamic Creation)"的概念,即通过一个字符串(类名)就可以创建相应的对象。具体的实例可以参见MFC中的CRuntimeClass类。Top
5 楼ugg(逸学堂(exuetang.net))回复于 2006-03-04 21:35:53 得分 1
那么系统是怎么知道有这个模子,这个模子是在什么时候加载的,又会在什么时候消失,存放在什么地方啊
~~~~~~~~~~~~~~··
编译器在编译的时候身成这个末子,这个末子在连接器连接的时候加载(并且确保只加载一个),存放地方,有连接器确定。Top
6 楼xiaocai0001(高楼目尽欲黄昏/梧桐叶上萧萧雨)回复于 2006-03-04 21:39:43 得分 10
看看编译出的汇编代码有助于理解这个问题
实际上类与对象的区分只是在程序设计层次上
生成可执行的应用程序时, 已经没有了类和对象的概念了, 看看汇编代码, 都是一些Call Jmp之类的操作, 看不到什么类啊对象的.Top
7 楼bohlee(我心澎湃)回复于 2006-03-07 00:47:52 得分 0
markTop




