在进入主函数之前,你能用C ++打印任何东西吗?
这是布隆伯格的采访问题:
答案 :创建一个全局变量,从printf语句中为某些内容赋值。
答案 0 :(得分:9)
#include <iostream>
struct X
{
X()
{
std::cout << "Hello before ";
}
} x;
int main()
{
std::cout << "main()";
}
这个结构良好的C ++程序打印
在main()之前你好
您可以看到,C ++标准保证命名空间范围变量的构造函数(在此示例中为x
)将在main()
之前执行。因此,如果您在此类对象的构造函数中打印某些内容,它将在main()
之前打印。的 QED 强>
答案 1 :(得分:8)
#include <iostream>
std::ostream & o = (std::cout << "Hello\n");
int main()
{
o << "Now main() runs.\n";
}
答案 2 :(得分:0)
标头文件
class A
{
static A* a;
public:
A() { cout << "A" ; }
};
实施文件:
A* A::a = new A;
嗯,静态(并且不仅仅是)在调用main
之前初始化。
修改强>
另一个:
bool b = /*(bool)*/printf("before main");
int main()
{
return 0;
}
答案 3 :(得分:0)
#include <iostream>
using namespace std;
int b() {
cout << "before ";
return 0;
}
static int a = b();
int main() {
cout << "main\n";
}