如何在主函数之外创建对象?
How object can be created outside main function?
我不明白这段代码的输出:
- 如何创建类
A
的对象a1
并调用构造函数? - 为什么对象
a1
是在main
函数之外创建的?
#include<iostream>
using namespace std;
class A
{
public:
A(int i)
{
std::cout<<"I am in A Class "<< i <<endl;
}
};
A a1(8);
int main()
{
A a(9);
return 0;
}
输出:
I am in A class 8
I am in A class 9
对象
可以首先在主函数之外创建的原因是什么
在您的示例中,a1
具有全局命名空间范围并具有静态存储持续时间。
它是在程序启动时构造的,因此你会看到
I am in A class 8
打印之前
I am in A class 9
a1
是一个全局变量。全局变量是在调用main
之前构造的。
它在技术上依赖于实现。
除了 a1 必须在使用之前构建
。在你的例子中,main(( 没有使用 a1。 但是,C++实现确保在使用 a1 之前构造 a1 的一种简单方法是在 main(( 之前构造/初始化 a1(以及任何具有静态存储的非局部非内联变量(。
参考:"具有静态存储持续时间的非局部非内联变量的动态初始化是在 main 的第一个语句之前排序还是延迟,这是实现定义的。如果它被推迟,则在与要初始化的变量相同的翻译单元中定义的任何非内联函数或非内联变量的任何非初始化之前都会发生">
相关文章:
- 使用基类指针创建对象时,缺少派生类析构函数
- 如何创建对象函数指针C++映射?
- 如何获取在 main() 函数中构造的类的创建对象?
- C++递归地在类构造函数中创建对象
- 创建一个函数,该函数使用模板创建类或子类的对象
- 通过向构造函数其他对象引用页面来创建对象
- 创建用户定义的复制构造函数时无法创建对象
- C ++:如何在不创建对象的情况下在主函数中调用方法
- 在递归函数中更有效地创建对象和对象数组?C++
- 从类模板创建对象的工厂函数模板?
- 在创建对象向量时,不为每个对象唯一调用默认对象构造函数
- 如何在主函数之外创建对象?
- 如何发送通过绑定到函数/方法创建的函数对象?
- 内存用于在函数内创建对象?
- 通过显式调用对象的析构函数和构造函数来重新创建对象
- 如何防止构造函数在引发异常时创建对象
- 一般函数中类的概括为基类创建对象代码
- 在成员函数中创建对象
- 在类模板中创建模板函数对象
- 如何创建一个C ++函数,该函数在每次用户输入新数据时创建新对象