在进入main函数之前,你能用C ++打印任何东西吗?

时间:2012-02-25 00:12:30

标签: c++

在进入主函数之前,你能用C ++打印任何东西吗?

这是布隆伯格的采访问题:

答案 :创建一个全局变量,从printf语句中为某些内容赋值。

4 个答案:

答案 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";
}