两个文件a,b,文件内部分别定义两个全局变量,编译的时候如何保证两个全局变量初始化顺序

同一个文件中的全局变量,按照顺序初始化;不同文件中的全局变量,编译器没有规定哪一些会先初始化。

做法:

两个文件a,b定义两个类A,B,把全局变量x,y的初始化放到类A,B中,其中类B的构造函数依赖于类A全局变量,保证B的初始化在A之后,即保证y在x之后初始化。

//1.h
#pragma once
#include
using namespace std;
int x;
class A {
public:
	A() {
		x = 5;
		cout << "全局变量x初始化" << endl;
	}
};
A a;

//2.h
#pragma once
#include
#include"1.h"
using namespace std;
extern A a;
extern int x;
int y;
class B {
public:
	B() {
		cout << "B()" << endl;
	}
	B(A) {
		y = x;
		cout << "全局变量y初始化" << endl;
	}
};
B b(a);

//main.h
int main(){
    return 0;
}

 

你可能感兴趣的:(面经中遇到问题)