请告诉我从c ++开始执行的地方,希望你的回答是"来自主要".
那怎么样?
class abc
{
public:
abc()
{
cout<<"hello";
}
};
const abc obj;
int main( )
{
cout<<"Main";
}
Run Code Online (Sandbox Code Playgroud)
输出:
helloMain
Run Code Online (Sandbox Code Playgroud)
请详细说明.
Ama*_*osh 12
在main
调用之前,会创建全局变量(因此调用它们的构造函数).
回答OP的评论:
如果你想比你写的代码深入挖掘,那么之前发生的事情main
就会被调用,我自己也没有清晰的画面.我在谈论我们编写的代码 - 其中入口点是main
函数,在初始化全局变量之后调用它.碰巧,类实例的初始化意味着调用它的构造函数.
因此,简而言之,该行const abc obj;
创建了一个类型的全局变量,abc
该变量在被调用之前被初始化(它是带有print语句的默认构造函数)main
.因此输出helloMain
从您的评论到其他答案的支持,听起来 10,000 英尺的视野可能有助于理解。
启动应用程序所涉及的确切步骤因操作系统、编译器和编程语言而异,但“一般”过程本质上是相同的。
int __entry( int argc, char *argv[] )
{
// configure standard I/O streams, threading tables, & other utilities
initialize_c_runtime();
// run the constructors for all static objects
initialize_static_cplusplus_objects();
// Now, finally, after *all* that we execute the 'main' function
return main(argc, argv);
}
Run Code Online (Sandbox Code Playgroud)