如果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;
}
任何人都可以帮忙吗?
答案 0 :(得分:6)
由于object
是一个静态(即全局)变量,因此在运行全局构造函数时,即在main()
开始执行之前,会执行其构造函数。
答案 1 :(得分:3)
它是在main
开始之前创建的。在C ++中,某些“程序执行”可以在main
之前发生。
答案 2 :(得分:1)
您的程序以main中的代码开头,但“事情”在此之前发生。一些编译器/环境将在main的开头添加一些额外的代码来创建全局对象,在其他情况下,创建全局代码在main之前运行。您需要真正关心的是“它发生在任何代码之前”。
但是,您不能依赖于在某些OTHER全局对象之前初始化的全局对象....
答案 3 :(得分:1)
在C ++中,全局对象在调用main之前作为静态数据创建。这意味着内存既不分配在堆栈上,也不分配在堆中,而是放在数据段的内存中。数据段是以类似于存储程序执行代码的方式布置的存储器区域。在任何代码运行之前将程序加载到内存中时会分配内存。
C ++不要求以任何特定顺序创建全局对象。唯一的保证是它们将在调用main
之前创建。也就是说,假设全局构造函数基本上是随机调用的。