小编Mat*_*ose的帖子

模板函数内的静态变量

在C++中,如果在header.hpp中定义此函数

void incAndShow()
{
  static int myStaticVar = 0;
  std::cout << ++myStaticVar << " " << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

并且在至少两个.cpp文件中包含header.hpp.然后你会有multiple definition of incAndShow().这是预期的.但是,如果您向该函数添加模板

template <class T>
void incAndShow()
{
  static int myStaticVar = 0;
  std::cout << ++myStaticVar << " " << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

那你就不会有任何multiple definition of错误.同样,两个不同的.cpp调用具有相同模板(例如incAndShow<int>())的函数将共享myStaticVar.这是正常的吗?我问这个问题,因为我确实依赖于这个"功能"(共享静态变量),我想确保不仅是我的实现正在这样做.

c++ static templates

27
推荐指数
2
解决办法
9664
查看次数

标签 统计

c++ ×1

static ×1

templates ×1