我有一些代码。
#include <iostream>
#include <memory>
using namespace std;
class A
{
public:
A() { cout << "called" << endl; }
};
A* foo()
{
static A* a = new A();
return a;
}
int main()
{
A *p = foo();
cout << std::addressof(*p) << endl;
A *pp = foo();
cout << std::addressof(*pp) << endl;
return 0;
}
我两次调用了foo()。但是类A构造函数调用一次。
我知道“静态”关键字仅使用相同的地址空间。
还有一个我不知道的“静态”关键字另一个规范?
如果删除静态代码,则此代码有效(构造函数调用了两次)。
最佳答案
函数static只能初始化一次。这就是static
所做的。
关于c++ - 为什么构造函数只调用一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64439786/