C++中,只有类,没有对象,编译时是否会赋予类被分配空间的能力?
一副函数,没有被调用到,那么运行时就不会给他分配对应的空间,因为根本没有运行到。但如果运行到,就会被分配空间。类,只有类没有创建对象。那么运行时,肯定是运行不到了,不会分...
一副函数,没有被调用到,那么运行时就不会给他分配对应的空间,因为根本没有运行到。但如果运行到,就会被分配空间。
类,只有类没有创建对象。那么运行时,肯定是运行不到了,不会分配空间。 那么我想问,编译时,对类这一块怎么处理,是否会赋予它被分配空间的能力?
就是说,它没被分配是因为没被运行到,而不是没这个被分配的能力。 到底它被编译时,有没有赋予被分配空间的能力————其实就是被分配空间的指令代码啦,到底有没有呢?
书上说,光光只是类,是不被分配内存空间的。到底是没运行到没被分配,还是编译时就没赋予它这种被分配的代码指令? 展开
类,只有类没有创建对象。那么运行时,肯定是运行不到了,不会分配空间。 那么我想问,编译时,对类这一块怎么处理,是否会赋予它被分配空间的能力?
就是说,它没被分配是因为没被运行到,而不是没这个被分配的能力。 到底它被编译时,有没有赋予被分配空间的能力————其实就是被分配空间的指令代码啦,到底有没有呢?
书上说,光光只是类,是不被分配内存空间的。到底是没运行到没被分配,还是编译时就没赋予它这种被分配的代码指令? 展开
展开全部
类是一种概念,用于描述其构造,类不占用内存,没有实体存在。虽然用于存放描述信息必定要占用存储空间,但这个存储空间不是存放类本身结构的。而对象是遵循这种构造概念的约定,从系统分配获得一块存储空间来实际存放所有成员的,你甚至可以想象其中也存放了所有其成员函数的代码。至于在实际实现中,系统采用了哪些技巧,以消除重复存储,节省系统存储空间占用,不属于我们在学习应用时的理解范围内。
在编译源程序时,系统已经知道了类的相关信息,肯定会分配存储空间来存储,与是否运行到某条语句无关。为对象分配存储空间与对象的存储类型有关。
在编译源程序时,系统已经知道了类的相关信息,肯定会分配存储空间来存储,与是否运行到某条语句无关。为对象分配存储空间与对象的存储类型有关。
更多追问追答
追问
我就是想问类,只有类的情况。
你是说编译时,等同于空白么?既没有生成类的代码,也没有生产分配空间的代码?
写与没有写完全一个样?
追答
在编译源程序时,系统已经知道了类的相关信息,肯定会分配存储空间来存储,与是否运行到某条语句无关。存储的是类的信息。
类是用于创建对象的模板。依据模板,才能建造出一模一样的无数个对象。
不写明类,系统如何知道。
展开全部
你说的“空间”看来是指数据呢。那确实是不会。
另外对于函数,没有被调用到,运行时就不会给它分配对应空间,这指的也是数据空间
代码空间的话,类或者函数,都有。
另外对于函数,没有被调用到,运行时就不会给它分配对应空间,这指的也是数据空间
代码空间的话,类或者函数,都有。
更多追问追答
追问
恩 我就是想知道,对于单单的类,没有对象的情况下,编译时,类是否会被编译生成对应的数据段代码?是否会被编译成对应的分配空间的代码段代码?
如果说都有生成,那么书上说的类不占空间,应该是指他运行时没有被执行而不占空间,它的性质就跟一个没有用到的副函数一样。
如果说没有生成,那么它的确不具备这个能力,运行时也没被运行到。
那么他究竟是两个都没有生成,还是只生成了其中一个呢
追答
没有静态数据成员、这个类的全局变量的话,编译时不会占用数据段的空间。
但是会生成代码段代码
这么说吧,编译的时候,对于数据,除了静态变量、全局变量以外,其他变量都不会占空间
代码的话,只要你有写代码,不考虑优化的话,它就占空间
数据段它只考虑是不是静态、是不是全局,而不管你是什么类型
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
又是一个没有营养的问题、、、本来是不想回答 的、、看在实在无聊的份上就帮你解答一下吧、、
先说分配空间能力、就好比你去一家公司面试,有很多人在门外等待主考官的面试、、面试的顺序是由主考官定制的、你没有权力去更改、、、
再说编译问题、编译只是把我们写的程序编译成机器可执行的二进制而已、它还是存在硬盘上的、、就好比上面 的例子、、门外边可以当作是硬盘,面试者都在外面,里面就是内存,
实例化一个类时先从缓冲区读取类信息、然后实例化,就好像把一个人从外边叫到里面、、然后开始面试、没有实例化时、、就好像你没把把面试者叫进房间就开始面试,结果只能是对着空气。。。
先说分配空间能力、就好比你去一家公司面试,有很多人在门外等待主考官的面试、、面试的顺序是由主考官定制的、你没有权力去更改、、、
再说编译问题、编译只是把我们写的程序编译成机器可执行的二进制而已、它还是存在硬盘上的、、就好比上面 的例子、、门外边可以当作是硬盘,面试者都在外面,里面就是内存,
实例化一个类时先从缓冲区读取类信息、然后实例化,就好像把一个人从外边叫到里面、、然后开始面试、没有实例化时、、就好像你没把把面试者叫进房间就开始面试,结果只能是对着空气。。。
追问
追问太长,写不下,极度不爽,已经私信您 求解答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没有分配空间的能力,声明类的对象时确定其分配空间的位子,定义时才真正分配空间。不仅仅是类如此,其他的变量也一样。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
“编译时是否会赋予类被分配空间的能力” 你加了个“被”把我看晕了。
按我理解你问题来回答,你创建类,编译时系统不会分配空间来放它里面的内容的,
列:
class A
{
int a;
}
在主函数中,你要是没有创建A的对象的话,内存中就不会有空间来存放a的地方的....
按我理解你问题来回答,你创建类,编译时系统不会分配空间来放它里面的内容的,
列:
class A
{
int a;
}
在主函数中,你要是没有创建A的对象的话,内存中就不会有空间来存放a的地方的....
追问
我举个例子,一个副函数,没有被调用,那么运行时副函数是否占用内存呢?因为没有被运行到,他自然不占用内存。
但是编译过程中,他具有被分配空间的能力,就是说,如果它被调用到,那么会被分配内存。
那么类,到底是什么情况,它是天生残疾还是没被运行?
追答
副函数? 不理解,不过刚才问了个大神,他说你问的问题不对,程序本身不会给函数分配内存。
程序在编译时就会把函数考到内存,然后运行时再给变量分配内存。
如果是父函数,当运行到它的子程序时,指针会指向它的子函数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询