什么时候在c++中创建对象?

when are objects created in c++?

本文关键字:创建对象 c++ 什么时候      更新时间:2023-10-16

如果c++中的程序从main函数开始执行,那么在执行过程中何时生成编程类的对象?

#include<iostream>
using namespace std;
class programming
{
   private:
      int variable;
   public:
      void input_value()
      {
         cout << "In function input_value, Enter an integern";
         cin >> variable;
      }
      void output_value()
      {
         cout << "Variable entered is ";
         cout << variable << "n";
      }
};
programming object;
main()
{
   object.input_value();
   object.output_value();
   return 0;
}

有人能帮忙吗?

由于object是一个静态(即全局)变量,它的构造函数在全局构造函数运行时执行,即在main()开始执行之前。

main启动前创建。在c++中,一些"程序执行"可能发生在main之前。

你的程序以main中的代码开始,但是"事情"发生在那之前。一些编译器/环境会在main的开头添加一些额外的代码来创建全局对象,在其他情况下,创建全局是在main之前运行的代码。你真正需要关心的是"它发生在你的任何代码之前"。

然而,你不能依赖全局对象在其他全局对象....之前初始化

在c++中,全局对象是在调用main之前作为静态数据创建的。这意味着内存既不是在堆栈上分配,也不是在堆上分配,而是放在一个数据段的内存中。数据段是一个内存区域,其布局方式类似于程序执行代码的存储方式。当程序在任何代码运行之前加载到内存中时,分配内存。

c++不要求以任何特定的顺序创建全局对象。唯一的保证是它们将在调用main之前创建。也就是说,假设全局构造函数基本上是随机调用的。