什么时候在c++中创建对象?
when are objects created in c++?
如果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
之前创建。也就是说,假设全局构造函数基本上是随机调用的。
相关文章:
- 使用基类指针创建对象时,缺少派生类析构函数
- 如何创建对象函数指针C++映射?
- C++创建对象数组
- 在 C++ 的 Switch Case 中创建对象后对对象调用方法
- 如何获取在 main() 函数中构造的类的创建对象?
- 基于文件中的条目创建对象
- 错误:创建对象后无法分配区域
- C++ 通过输入创建对象
- 堆还是堆栈用于创建对象?
- 使用 C++ 创建对象数组
- 使用unique_ptr创建对象
- C++递归地在类构造函数中创建对象
- 通过向构造函数其他对象引用页面来创建对象
- ReactiveX (rx) - 在对象上应用可观察对象,而不是在可观察对象中创建对象
- 如何在OSX上正确创建C++对象文件(.o)
- 编译器是否会创建vtable,而不考虑在c++中创建对象
- 创建对象并防止被破坏
- 在C++中,友元类可以从友元类创建对象吗
- 只在堆中创建C++对象
- 创建用户定义的复制构造函数时无法创建对象