C++ 中的变量分配是如何工作的?

How does variable allocation works in C++?

我在main.cpp正文中有这个(怎么称呼?全局?)

ofstream s;
...
int main ... {
    s = ofstream("somefile.txt");
...

然后另一个线程每天使用一次滚动:

s.close();
// do I need to cleanup in between?
s = ofstream("anotherone.txt");

我需要在 creating 新流之前进行清理吗?

close()是在classofstream中定义的成员函数。它不是析构函数;从根本上讲,它对 C++ 语言的规则来说并不特别。就此而言,s = ofstream("anotherone.txt") 实际上只是拼写代码行 s.assignment_operator(ofstream("anotherone.txt")) 的另一种方式,只是拼写为 operator= 而不是 assignment_operator。 (请注意,在这种情况下,传递给成员函数的值是一个临时值,并在函数 returns 之后被销毁。这并不一定意味着打开和关闭文件时会发生什么;这就是语言的工作方式。)

一个全局变量贯穿程序的整个生命周期;启动和关闭期间的精确语义有点棘手,但肯定在“主要阶段”期间它们始终存在。当调用 s.close() 时,ofstream 的设计可能会将 s 置于不同的状态,但这完全取决于 ofstream 的设计,并且是你d 通过阅读 class 的文档而不是通过阅读语言规则来发现。