c++ - 为什么构造函数只调用一次?

标签 c++ c++14

我有一些代码。

#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/

相关文章:

c++ - 尾随返回类型中 SFINAE 的 GCC 错误

c++ - SFINAE:static_assert 与 std::enable_if

c++ - 在 C++ 可变参数 lambda 中省略 "auto"关键字?

c++ - 如何从线性内存创建 cudaTextureObject_t?

c++ - 在更新期间 boost 锁定变量 vector

c++ - 函数模板参数推导模板参数vs默认模板参数vs返回类型

c++ - operator new 的任何实现是否返回指向零大小数组保护页的指针?

c++ - 如何使用 "wrapper function"调用不带参数的递归函数 n 次?

c++ - 如何打印属于 map 的一系列元素 (std::pair<size_t, std::string>)(不是所有元素)

c++ - 二进制通用 lambda 不匹配 ptr 到函数参数?