什么时候用c ++创建对象?

时间:2013-06-04 15:59:57

标签: 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;
}

任何人都可以帮忙吗?

4 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:3)

它是在main开始之前创建的。在C ++中,某些“程序执行”可以在main之前发生。

答案 2 :(得分:1)

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

但是,您不能依赖于在某些OTHER全局对象之前初始化的全局对象....

答案 3 :(得分:1)

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

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