在C++中对象是什么时候创建的? 如果C++中的程序执行在main函数中启动,那么在执行时生成程序类的对象是什么时候? #include<iostream> using namespace std; class programming { private: int variable; public: void input_value() { cout << "In function input_value, Enter an integer\n"; cin >> variable; } void output_value() { cout << "Variable entered is "; cout << variable << "\n"; } }; programming object; main() { object.input_value(); object.output_value(); return 0; }
有人能帮忙吗?它是在main启动之前创建的。在C++中,一些程序执行可以在main .< /p> 之前发生,因为对象是静态的,即全局变量,当全局构造函数运行时,即在主开始执行之前,它的构造函数被执行。 在main中,程序从代码开始,但事情发生在这之前。一些编译器/环境会在main的开头添加一些额外的代码来创建全局对象,在其他情况下,创建全局是在main之前运行的代码。您真正需要关心的是,它发生在任何代码之前在C++中对象是什么时候创建的? 如果C++中的程序执行在main函数中启动,那么在执行时生成程序类的对象是什么时候? #include<iostream> using namespace std; class programming { private: int variable; public: void input_value() { cout << "In function input_value, Enter an integer\n"; cin >> variable; } void output_value() { cout << "Variable entered is "; cout << variable << "\n"; } }; programming object; main() { object.input_value(); object.output_value(); return 0; },c++,C++,有人能帮忙吗?它是在main启动之前创建的。在C++中,一些程序执行可以在main .< /p> 之前发生,因为对象是静态的,即全局变量,当全局构造函数运行时,即在主开始执行之前,它的构造函数被执行。 在main中,程序从代码开始,但事情发生在这之前。一些编译器/环境会在main的开头添加一些额外的代码来创建全局对象,在其他情况下,创建全局是在main之前运行的代码。您真正需要关心的是,它发生在任何代码之前 但是,您不能依赖于在初始化其他全局对象之前初始化全局对象
但是,您不能依赖于在初始化其他全局对象之前初始化全局对象在C++中,全局对象在调用main之前作为静态数据创建。这意味着内存既不在堆栈上也不在堆上分配,而是放在数据段的内存中。数据段是内存中的一个区域,其布局方式类似于程序执行代码的存储方式。当程序在任何代码运行之前加载到内存中时,会分配内存
C++不要求以任何特定顺序创建全局对象。唯一的保证是它们将在调用main之前创建。也就是说,假设全局构造函数基本上是随机调用的 如果作为指针执行,则在执行新操作时会创建指针。如果创建时没有指针,则在程序初始化时会在堆栈上创建。对象可能不在堆栈上。@demonofnight您是说在启动main之前?@Aparan,否,它是在程序加载到ram时创建的,在这个特定的scenario@Aparan规则并不愚蠢。当你回答这些问题时,你会发现它们很有价值。你可以依靠同一翻译单元中的全局对象按照定义的顺序进行初始化。谢谢Pete,我不确定规则是什么,但我知道有足够的模糊性,不能依赖于某种特定的秩序。它不是静态的,它只是全球性的;静态在非成员的情况下意味着一些微妙的不同。但它确实有静态存储持续时间。