bar*_*can 1 c++ constructor runtime dynamic compile-time
据我所知,我们可以在运行时或编译时创建对象.例如
SomeType object1;
SomeType *object2 = new SomeType;
Run Code Online (Sandbox Code Playgroud)
所以我认为在这里的代码;
int main(){
cout << "lalalal";
SomeType object1;
}
Run Code Online (Sandbox Code Playgroud)
应该为object1调用构造函数,然后lalalal应该出现在屏幕上.因为编译器在程序启动之前分配内存.那么在什么时候我错了?
据我所知,我们可以在运行时或编译时创建对象.
并不是的.在您的代码示例中,第一个对象是使用自动存储持续时间创建的(通常描述为"在堆栈上"),第二个对象具有分配的 动态存储持续时间(通常描述为"在堆上").但这些都发生在运行时.
应该为object1调用构造函数,然后lalalal应该出现在屏幕上.
函数中的语句从上到下执行(显然不包括循环).所以该对象是第二个创建的.*
因为编译器在程序启动之前分配内存.
是的,可能是提前分配内存.但就可观察到的影响而言,这是无关紧要的.
| 归档时间: |
|
| 查看次数: |
2297 次 |
| 最近记录: |