2012-04-22 127 views
2

如果您在函数中创建了像int,char,float这样的原始类型变量,您是在运行时还是在编译时创建了该变量?在C++中编译时间和运行时间

如果您在函数内创建了一个对象,您是在运行时还是在编译时创建了该对象?

如果通过堆内存分配创建对象,您是在运行时还是在编译时创建该对象?

什么是静态内存分配和动态内存分配?

回答

4

如果您在函数内部创建了像int,char,float 等基本类型的变量。你是否在运行时或编译时创建了该变量?

您在运行时创建变量,该变量在函数执行时创建,并在函数完成时被销毁。

如果您在函数内部创建了一个对象。您是在运行时还是在编译时创建该对象?

同上。

如果通过堆分配内存来创建对象。您是在运行时还是在编译时创建该对象?

如果你正在堆上创建一个对象,你基本上是在运行时分配内存并得到一个指向它的指针。用这个指针,你可以读/写这个内存。

静态存储器,是只能在运行时读取的存储器。

动态内存分配,是指在堆上分配对象并通过指向内存的指针更改它们。

+0

那么没有变量和对象在编译时创建?那么编译时创建的东西是什么?他们说继承是在编译时,多态和组合在运行时是什么意思?不要担心我理解多态性和组合,所以不需要解释这一点。感谢高级 – user1349313 2012-04-22 09:16:43

+0

我的理解是,静态变量存储为程序二进制文件的一部分(即代码,标记为静态的变量,常量)。其他一切都是在运行时创建的。 – 2012-04-22 09:16:52

+0

谢谢大卫,你的意思是字符串文字数字文字? – user1349313 2012-04-22 09:19:02

0

不,const int a=42; // a是在编译时创建的,而不是在运行时创建的。